/* THIS IS A GENERATED/BUNDLED FILE BY ESBUILD if you want to view the source, please visit the github repository of this plugin */ 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 __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); var __export = (target, all) => { __markAsModule(target); for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __reExport = (target, module2, desc) => { if (module2 && typeof module2 === "object" || typeof module2 === "function") { for (let key of __getOwnPropNames(module2)) if (!__hasOwnProp.call(target, key) && key !== "default") __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); } return target; }; var __toModule = (module2) => { return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); }; var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // main.ts __export(exports, { default: () => MinimalTheme }); var import_obsidian = __toModule(require("obsidian")); var MinimalTheme = class extends import_obsidian.Plugin { onload() { return __async(this, null, function* () { yield this.loadSettings(); this.addSettingTab(new MinimalSettingTab(this.app, this)); this.addStyle(); let media = window.matchMedia("(prefers-color-scheme: dark)"); let updateSystemTheme = () => { if (media.matches && this.settings.useSystemTheme) { console.log("Dark mode active"); this.updateDarkStyle(); } else if (this.settings.useSystemTheme) { console.log("Light mode active"); this.updateLightStyle(); } }; media.addEventListener("change", updateSystemTheme); this.register(() => media.removeEventListener("change", updateSystemTheme)); updateSystemTheme(); let settingsUpdate = () => { const fontSize = this.app.vault.getConfig("baseFontSize"); this.settings.textNormal = fontSize; if (this.app.vault.getConfig("foldHeading")) { this.settings.folding = true; this.saveData(this.settings); console.log("Folding is on"); } else { this.settings.folding = false; this.saveData(this.settings); console.log("Folding is off"); } document.body.classList.toggle("minimal-folding", this.settings.folding); if (this.app.vault.getConfig("showLineNumber")) { this.settings.lineNumbers = true; this.saveData(this.settings); console.log("Line numbers are on"); } else { this.settings.lineNumbers = false; this.saveData(this.settings); console.log("Line numbers are off"); } document.body.classList.toggle("minimal-line-nums", this.settings.lineNumbers); if (this.app.vault.getConfig("readableLineLength")) { this.settings.readableLineLength = true; this.saveData(this.settings); console.log("Readable line length is on"); } else { this.settings.readableLineLength = false; this.saveData(this.settings); console.log("Readable line length is off"); } document.body.classList.toggle("minimal-readable", this.settings.readableLineLength); document.body.classList.toggle("minimal-readable-off", !this.settings.readableLineLength); }; let sidebarUpdate = () => { const sidebarEl = document.getElementsByClassName("mod-left-split")[0]; const ribbonEl = document.getElementsByClassName("side-dock-ribbon")[0]; if (sidebarEl && ribbonEl && this.app.vault.getConfig("theme") == "moonstone" && this.settings.lightStyle == "minimal-light-contrast") { sidebarEl.addClass("theme-dark"); ribbonEl.addClass("theme-dark"); } else if (sidebarEl && ribbonEl) { sidebarEl.removeClass("theme-dark"); ribbonEl.removeClass("theme-dark"); } }; this.registerEvent(app.vault.on("config-changed", settingsUpdate)); this.registerEvent(app.workspace.on("css-change", sidebarUpdate)); settingsUpdate(); app.workspace.onLayoutReady(() => { sidebarUpdate(); }); const lightStyles = ["minimal-light", "minimal-light-tonal", "minimal-light-contrast", "minimal-light-white"]; const darkStyles = ["minimal-dark", "minimal-dark-tonal", "minimal-dark-black"]; const imgGridStyles = ["img-grid", "img-grid-ratio", "img-nogrid"]; const tableWidthStyles = ["table-100", "table-default-width", "table-wide", "table-max"]; const iframeWidthStyles = ["iframe-100", "iframe-default-width", "iframe-wide", "iframe-max"]; const imgWidthStyles = ["img-100", "img-default-width", "img-wide", "img-max"]; const mapWidthStyles = ["map-100", "map-default-width", "map-wide", "map-max"]; const chartWidthStyles = ["chart-100", "chart-default-width", "chart-wide", "chart-max"]; const theme = ["moonstone", "obsidian"]; this.addCommand({ id: "increase-body-font-size", name: "Increase body font size", callback: () => { this.settings.textNormal = this.settings.textNormal + 0.5; this.saveData(this.settings); this.setFontSize(); } }); this.addCommand({ id: "decrease-body-font-size", name: "Decrease body font size", callback: () => { this.settings.textNormal = this.settings.textNormal - 0.5; this.saveData(this.settings); this.setFontSize(); } }); this.addCommand({ id: "toggle-minimal-dark-cycle", name: "Cycle between dark mode styles", callback: () => { this.settings.darkStyle = darkStyles[(darkStyles.indexOf(this.settings.darkStyle) + 1) % darkStyles.length]; this.saveData(this.settings); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-light-cycle", name: "Cycle between light mode styles", callback: () => { this.settings.lightStyle = lightStyles[(lightStyles.indexOf(this.settings.lightStyle) + 1) % lightStyles.length]; this.saveData(this.settings); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-hidden-borders", name: "Toggle sidebar borders", callback: () => { this.settings.bordersToggle = !this.settings.bordersToggle; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "toggle-colorful-headings", name: "Toggle colorful headings", callback: () => { this.settings.colorfulHeadings = !this.settings.colorfulHeadings; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "toggle-minimal-focus-mode", name: "Toggle focus mode", callback: () => { this.settings.focusMode = !this.settings.focusMode; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "toggle-minimal-colorful-frame", name: "Toggle colorful window frame", callback: () => { this.settings.colorfulFrame = !this.settings.colorfulFrame; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "cycle-minimal-table-width", name: "Cycle between table width options", callback: () => { this.settings.tableWidth = tableWidthStyles[(tableWidthStyles.indexOf(this.settings.tableWidth) + 1) % tableWidthStyles.length]; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "cycle-minimal-image-width", name: "Cycle between image width options", callback: () => { this.settings.imgWidth = imgWidthStyles[(imgWidthStyles.indexOf(this.settings.imgWidth) + 1) % imgWidthStyles.length]; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "cycle-minimal-iframe-width", name: "Cycle between iframe width options", callback: () => { this.settings.iframeWidth = iframeWidthStyles[(iframeWidthStyles.indexOf(this.settings.iframeWidth) + 1) % iframeWidthStyles.length]; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "cycle-minimal-chart-width", name: "Cycle between chart width options", callback: () => { this.settings.chartWidth = chartWidthStyles[(chartWidthStyles.indexOf(this.settings.chartWidth) + 1) % chartWidthStyles.length]; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "cycle-minimal-map-width", name: "Cycle between map width options", callback: () => { this.settings.mapWidth = mapWidthStyles[(mapWidthStyles.indexOf(this.settings.mapWidth) + 1) % mapWidthStyles.length]; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "toggle-minimal-img-grid", name: "Toggle image grids", callback: () => { this.settings.imgGrid = !this.settings.imgGrid; this.saveData(this.settings); this.refresh(); } }); this.addCommand({ id: "toggle-minimal-switch", name: "Switch between light and dark mode", callback: () => { this.settings.theme = theme[(theme.indexOf(this.settings.theme) + 1) % theme.length]; this.saveData(this.settings); this.updateTheme(); } }); this.addCommand({ id: "toggle-minimal-light-default", name: "Use light mode (default)", callback: () => { this.settings.lightStyle = "minimal-light"; this.saveData(this.settings); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-light-white", name: "Use light mode (all white)", callback: () => { this.settings.lightStyle = "minimal-light-white"; this.saveData(this.settings); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-light-tonal", name: "Use light mode (low contrast)", callback: () => { this.settings.lightStyle = "minimal-light-tonal"; this.saveData(this.settings); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-light-contrast", name: "Use light mode (high contrast)", callback: () => { this.settings.lightStyle = "minimal-light-contrast"; this.saveData(this.settings); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-dark-default", name: "Use dark mode (default)", callback: () => { this.settings.darkStyle = "minimal-dark"; this.saveData(this.settings); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-dark-tonal", name: "Use dark mode (low contrast)", callback: () => { this.settings.darkStyle = "minimal-dark-tonal"; this.saveData(this.settings); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-dark-black", name: "Use dark mode (true black)", callback: () => { this.settings.darkStyle = "minimal-dark-black"; this.saveData(this.settings); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-atom-light", name: "Switch light color scheme to Atom (light)", callback: () => { this.settings.lightScheme = "minimal-atom-light"; this.saveData(this.settings); this.updateLightScheme(); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-default-light", name: "Switch light color scheme to default (light)", callback: () => { this.settings.lightScheme = "minimal-default-light"; this.saveData(this.settings); this.updateLightScheme(); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-gruvbox-light", name: "Switch light color scheme to Gruvbox (light)", callback: () => { this.settings.lightScheme = "minimal-gruvbox-light"; this.saveData(this.settings); this.updateLightScheme(); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-everforest-light", name: "Switch light color scheme to Everforest (light)", callback: () => { this.settings.lightScheme = "minimal-everforest-light"; this.saveData(this.settings); this.updateLightScheme(); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-macos-light", name: "Switch light color scheme to macOS (light)", callback: () => { this.settings.lightScheme = "minimal-macos-light"; this.saveData(this.settings); this.updateLightScheme(); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-notion-light", name: "Switch light color scheme to Notion (light)", callback: () => { this.settings.lightScheme = "minimal-notion-light"; this.saveData(this.settings); this.updateLightScheme(); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-nord-light", name: "Switch light color scheme to Nord (light)", callback: () => { this.settings.lightScheme = "minimal-nord-light"; this.saveData(this.settings); this.updateLightScheme(); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-solarized-light", name: "Switch light color scheme to Solarized (light)", callback: () => { this.settings.lightScheme = "minimal-solarized-light"; this.saveData(this.settings); this.updateLightScheme(); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-things-light", name: "Switch light color scheme to Things (light)", callback: () => { this.settings.lightScheme = "minimal-things-light"; this.saveData(this.settings); this.updateLightScheme(); this.updateLightStyle(); } }); this.addCommand({ id: "toggle-minimal-atom-dark", name: "Switch color scheme to Atom (dark)", callback: () => { this.settings.darkScheme = "minimal-atom-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-dracula-dark", name: "Switch color scheme to Dracula (dark)", callback: () => { this.settings.darkScheme = "minimal-dracula-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-default-dark", name: "Switch dark color scheme to default (dark)", callback: () => { this.settings.darkScheme = "minimal-default-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-gruvbox-dark", name: "Switch dark color scheme to Gruvbox (dark)", callback: () => { this.settings.darkScheme = "minimal-gruvbox-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-everforest-dark", name: "Switch dark color scheme to Everforest (dark)", callback: () => { this.settings.darkScheme = "minimal-everforest-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-macos-dark", name: "Switch light color scheme to macOS (dark)", callback: () => { this.settings.darkScheme = "minimal-macos-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-nord-dark", name: "Switch dark color scheme to Nord (dark)", callback: () => { this.settings.darkScheme = "minimal-nord-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-notion-dark", name: "Switch dark color scheme to Notion (dark)", callback: () => { this.settings.darkScheme = "minimal-notion-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-solarized-dark", name: "Switch dark color scheme to Solarized (dark)", callback: () => { this.settings.darkScheme = "minimal-solarized-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-things-dark", name: "Switch dark color scheme to Things (dark)", callback: () => { this.settings.darkScheme = "minimal-things-dark"; this.saveData(this.settings); this.updateDarkScheme(); this.updateDarkStyle(); } }); this.addCommand({ id: "toggle-minimal-dev-block-width", name: "Dev \u2014 Show block widths", callback: () => { this.settings.devBlockWidth = !this.settings.devBlockWidth; this.saveData(this.settings); this.refresh(); } }); this.refresh(); }); } onunload() { console.log("Unloading Minimal Theme Settings plugin"); } loadSettings() { return __async(this, null, function* () { this.settings = Object.assign(DEFAULT_SETTINGS, yield this.loadData()); }); } saveSettings() { return __async(this, null, function* () { yield this.saveData(this.settings); }); } refresh() { this.updateStyle(); } addStyle() { const css = document.createElement("style"); css.id = "minimal-theme"; document.getElementsByTagName("head")[0].appendChild(css); document.body.classList.add("minimal-theme"); this.updateStyle(); } setFontSize() { this.app.vault.setConfig("baseFontSize", this.settings.textNormal); this.app.updateFontSize(); } updateStyle() { this.removeStyle(); document.body.addClass(this.settings.darkScheme); document.body.addClass(this.settings.lightScheme); document.body.classList.toggle("borders-none", !this.settings.bordersToggle); document.body.classList.toggle("colorful-headings", this.settings.colorfulHeadings); document.body.classList.toggle("colorful-frame", this.settings.colorfulFrame); document.body.classList.toggle("colorful-active", this.settings.colorfulActiveStates); document.body.classList.toggle("minimal-focus-mode", this.settings.focusMode); document.body.classList.toggle("links-int-on", this.settings.underlineInternal); document.body.classList.toggle("links-ext-on", this.settings.underlineExternal); document.body.classList.toggle("system-shade", this.settings.useSystemTheme); document.body.classList.toggle("full-width-media", this.settings.fullWidthMedia); document.body.classList.toggle("img-grid", this.settings.imgGrid); document.body.classList.toggle("minimal-dev-block-width", this.settings.devBlockWidth); document.body.classList.toggle("minimal-status-off", !this.settings.minimalStatus); document.body.classList.toggle("full-file-names", !this.settings.trimNames); document.body.classList.toggle("labeled-nav", this.settings.labeledNav); document.body.classList.toggle("minimal-folding", this.settings.folding); document.body.removeClass("table-wide", "table-max", "table-100", "table-default-width", "iframe-wide", "iframe-max", "iframe-100", "iframe-default-width", "img-wide", "img-max", "img-100", "img-default-width", "chart-wide", "chart-max", "chart-100", "chart-default-width", "map-wide", "map-max", "map-100", "map-default-width"); document.body.addClass(this.settings.chartWidth); document.body.addClass(this.settings.tableWidth); document.body.addClass(this.settings.imgWidth); document.body.addClass(this.settings.iframeWidth); document.body.addClass(this.settings.mapWidth); const el = document.getElementById("minimal-theme"); if (!el) throw "minimal-theme element not found!"; else { el.innerText = "body.minimal-theme{--font-ui-small:" + this.settings.textSmall + "px;--line-height:" + this.settings.lineHeight + ";--line-width:" + this.settings.lineWidth + "rem;--line-width-wide:" + this.settings.lineWidthWide + "rem;--max-width:" + this.settings.maxWidth + "%;--font-editor-override:" + this.settings.editorFont + ";"; } } refreshSystemTheme() { const isDarkMode = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches; if (isDarkMode && this.settings.useSystemTheme) { console.log("Dark mode active"); this.updateDarkStyle(); } else if (this.settings.useSystemTheme) { console.log("Light mode active"); this.updateLightStyle(); } } updateDarkStyle() { document.body.removeClass("theme-light", "minimal-dark", "minimal-dark-tonal", "minimal-dark-black"); document.body.addClass(this.settings.darkStyle); this.app.setTheme("obsidian"); this.app.vault.setConfig("theme", "obsidian"); this.app.workspace.trigger("css-change"); } updateLightStyle() { document.body.removeClass("theme-dark", "minimal-light", "minimal-light-tonal", "minimal-light-contrast", "minimal-light-white"); document.body.addClass(this.settings.lightStyle); this.app.setTheme("moonstone"); this.app.vault.setConfig("theme", "moonstone"); this.app.workspace.trigger("css-change"); } updateDarkScheme() { document.body.removeClass("minimal-atom-dark", "minimal-default-dark", "minimal-dracula-dark", "minimal-everforest-dark", "minimal-gruvbox-dark", "minimal-macos-dark", "minimal-nord-dark", "minimal-notion-dark", "minimal-solarized-dark", "minimal-things-dark"); document.body.addClass(this.settings.darkScheme); } updateLightScheme() { document.body.removeClass("minimal-atom-light", "minimal-default-light", "minimal-everforest-light", "minimal-gruvbox-light", "minimal-macos-light", "minimal-nord-light", "minimal-notion-light", "minimal-solarized-light", "minimal-things-light"); document.body.addClass(this.settings.lightScheme); } updateTheme() { this.app.setTheme(this.settings.theme); this.app.vault.setConfig("theme", this.settings.theme); this.app.workspace.trigger("css-change"); } removeStyle() { document.body.removeClass("minimal-light", "minimal-light-tonal", "minimal-light-contrast", "minimal-light-white", "minimal-dark", "minimal-dark-tonal", "minimal-dark-black"); document.body.addClass(this.settings.lightStyle, this.settings.darkStyle); } }; var DEFAULT_SETTINGS = { theme: "moonstone", lightStyle: "minimal-light", darkStyle: "minimal-dark", lightScheme: "minimal-default-light", darkScheme: "minimal-default-dark", editorFont: "", lineHeight: 1.5, lineWidth: 40, lineWidthWide: 50, maxWidth: 88, textNormal: 16, textSmall: 13, imgGrid: false, imgWidth: "img-default-width", tableWidth: "table-default-width", iframeWidth: "iframe-default-width", mapWidth: "map-default-width", chartWidth: "chart-default-width", colorfulHeadings: false, colorfulFrame: false, colorfulActiveStates: false, trimNames: true, labeledNav: false, fullWidthMedia: true, bordersToggle: true, minimalStatus: true, focusMode: false, underlineInternal: true, underlineExternal: true, useSystemTheme: false, folding: true, lineNumbers: false, readableLineLength: false, devBlockWidth: false }; var MinimalSettingTab = class extends import_obsidian.PluginSettingTab { constructor(app2, plugin) { super(app2, plugin); this.plugin = plugin; } display() { let { containerEl } = this; containerEl.empty(); containerEl.createEl("h3", { text: "Minimal Theme Settings" }); const mainDesc = containerEl.createEl("p"); mainDesc.appendText("Need help? Explore the "); mainDesc.appendChild(createEl("a", { text: "Minimal documentation", href: "https://minimal.guide" })); mainDesc.appendText(" or visit the "); mainDesc.appendChild(createEl("strong", { text: "#minimal" })); mainDesc.appendText(" channel in the official Obsidian Discord. You can support continued development by "); mainDesc.appendChild(createEl("a", { text: "buying me a coffee", href: "https://www.buymeacoffee.com/kepano" })); mainDesc.appendText(" \u2615"); containerEl.createEl("br"); containerEl.createEl("h3", { text: "Color scheme" }); const colorDesc = containerEl.createEl("p"); colorDesc.appendChild(createEl("span", { text: "To create a completely custom color scheme use " })); colorDesc.appendChild(createEl("a", { text: "Style Settings plugin", href: "obsidian://show-plugin?id=obsidian-style-settings" })); colorDesc.appendText("."); new import_obsidian.Setting(containerEl).setName("Light mode color scheme").setDesc("Preset color options for light mode").addDropdown((dropdown) => dropdown.addOption("minimal-default-light", "Default").addOption("minimal-atom-light", "Atom").addOption("minimal-everforest-light", "Everforest").addOption("minimal-gruvbox-light", "Gruvbox").addOption("minimal-macos-light", "macOS").addOption("minimal-nord-light", "Nord").addOption("minimal-notion-light", "Notion").addOption("minimal-solarized-light", "Solarized").addOption("minimal-things-light", "Things").setValue(this.plugin.settings.lightScheme).onChange((value) => { this.plugin.settings.lightScheme = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateLightScheme(); })); new import_obsidian.Setting(containerEl).setName("Light mode background contrast").setDesc("Level of contrast between sidebar and main content").addDropdown((dropdown) => dropdown.addOption("minimal-light", "Default").addOption("minimal-light-white", "All white").addOption("minimal-light-tonal", "Low contrast").addOption("minimal-light-contrast", "High contrast").setValue(this.plugin.settings.lightStyle).onChange((value) => { this.plugin.settings.lightStyle = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateLightStyle(); })); new import_obsidian.Setting(containerEl).setName("Dark mode color scheme").setDesc("Preset colors options for dark mode").addDropdown((dropdown) => dropdown.addOption("minimal-default-dark", "Default").addOption("minimal-atom-dark", "Atom").addOption("minimal-dracula-dark", "Dracula").addOption("minimal-everforest-dark", "Everforest").addOption("minimal-gruvbox-dark", "Gruvbox").addOption("minimal-macos-dark", "macOS").addOption("minimal-nord-dark", "Nord").addOption("minimal-notion-dark", "Notion").addOption("minimal-solarized-dark", "Solarized").addOption("minimal-things-dark", "Things").setValue(this.plugin.settings.darkScheme).onChange((value) => { this.plugin.settings.darkScheme = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateDarkScheme(); })); new import_obsidian.Setting(containerEl).setName("Dark mode background contrast").setDesc("Level of contrast between sidebar and main content").addDropdown((dropdown) => dropdown.addOption("minimal-dark", "Default").addOption("minimal-dark-tonal", "Low contrast").addOption("minimal-dark-black", "True black").setValue(this.plugin.settings.darkStyle).onChange((value) => { this.plugin.settings.darkStyle = value; this.plugin.saveData(this.plugin.settings); this.plugin.updateDarkStyle(); })); containerEl.createEl("br"); containerEl.createEl("h3"); containerEl.createEl("h3", { text: "Features" }); new import_obsidian.Setting(containerEl).setName("Match system setting for light or dark mode").setDesc("Automatically switch based on your OS setting").addToggle((toggle) => toggle.setValue(this.plugin.settings.useSystemTheme).onChange((value) => { this.plugin.settings.useSystemTheme = value; this.plugin.saveData(this.plugin.settings); this.plugin.refreshSystemTheme(); })); new import_obsidian.Setting(containerEl).setName("Text labels for primary navigation").setDesc("Navigation in left sidebar uses text labels (see documentation for localization support)").addToggle((toggle) => toggle.setValue(this.plugin.settings.labeledNav).onChange((value) => { this.plugin.settings.labeledNav = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Colorful window frame").setDesc("The top area of the app uses your accent color").addToggle((toggle) => toggle.setValue(this.plugin.settings.colorfulFrame).onChange((value) => { this.plugin.settings.colorfulFrame = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Colorful active states").setDesc("Active file and menu items use your accent color").addToggle((toggle) => toggle.setValue(this.plugin.settings.colorfulActiveStates).onChange((value) => { this.plugin.settings.colorfulActiveStates = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Colorful headings").setDesc("Headings use a different color for each size").addToggle((toggle) => toggle.setValue(this.plugin.settings.colorfulHeadings).onChange((value) => { this.plugin.settings.colorfulHeadings = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Minimal status bar").setDesc("Use narrow status bar").addToggle((toggle) => toggle.setValue(this.plugin.settings.minimalStatus).onChange((value) => { this.plugin.settings.minimalStatus = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Trim file names in sidebars").setDesc("Use ellipses to fit file names on a single line").addToggle((toggle) => toggle.setValue(this.plugin.settings.trimNames).onChange((value) => { this.plugin.settings.trimNames = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Workspace borders").setDesc("Display divider lines between workspace elements").addToggle((toggle) => toggle.setValue(this.plugin.settings.bordersToggle).onChange((value) => { this.plugin.settings.bordersToggle = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Focus mode").setDesc("Hide tab bar and status bar, hover to display (can be toggled with hotkey)").addToggle((toggle) => toggle.setValue(this.plugin.settings.focusMode).onChange((value) => { this.plugin.settings.focusMode = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Underline internal links").setDesc("Show underlines on internal links").addToggle((toggle) => toggle.setValue(this.plugin.settings.underlineInternal).onChange((value) => { this.plugin.settings.underlineInternal = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Underline external links").setDesc("Show underlines on external links").addToggle((toggle) => toggle.setValue(this.plugin.settings.underlineExternal).onChange((value) => { this.plugin.settings.underlineExternal = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Maximize media").setDesc("Images and videos fill the width of the line").addToggle((toggle) => toggle.setValue(this.plugin.settings.fullWidthMedia).onChange((value) => { this.plugin.settings.fullWidthMedia = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); containerEl.createEl("br"); containerEl.createEl("h3"); containerEl.createEl("h3", { text: "Layout" }); const layoutDesc = containerEl.createEl("p"); layoutDesc.appendChild(createEl("span", { text: "The following options require the " })); layoutDesc.appendChild(createEl("a", { text: "Contextual Typography plugin", href: "obsidian://show-plugin?id=obsidian-contextual-typography" })); layoutDesc.appendText(". These options can also be defined on a per-file basis using YAML, "); layoutDesc.appendChild(createEl("a", { text: "see documentation", href: "https://minimal.guide/Features/Block+width" })); layoutDesc.appendText(" for details."); new import_obsidian.Setting(containerEl).setName("Image grids").setDesc("Turn consecutive images into columns \u2014 to make a new row, add an extra line break between images").addToggle((toggle) => toggle.setValue(this.plugin.settings.imgGrid).onChange((value) => { this.plugin.settings.imgGrid = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Chart width").setDesc("Default width for chart blocks").addDropdown((dropdown) => dropdown.addOption("chart-default-width", "Default").addOption("chart-wide", "Wide line width").addOption("chart-max", "Maximum line width").addOption("chart-100", "100% pane width").setValue(this.plugin.settings.chartWidth).onChange((value) => { this.plugin.settings.chartWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Iframe width").setDesc("Default width for iframe blocks").addDropdown((dropdown) => dropdown.addOption("iframe-default-width", "Default").addOption("iframe-wide", "Wide line width").addOption("iframe-max", "Maximum line width").addOption("iframe-100", "100% pane width").setValue(this.plugin.settings.iframeWidth).onChange((value) => { this.plugin.settings.iframeWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Image width").setDesc("Default width for image blocks").addDropdown((dropdown) => dropdown.addOption("img-default-width", "Default").addOption("img-wide", "Wide line width").addOption("img-max", "Maximum line width").addOption("img-100", "100% pane width").setValue(this.plugin.settings.imgWidth).onChange((value) => { this.plugin.settings.imgWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Map width").setDesc("Default width for map blocks").addDropdown((dropdown) => dropdown.addOption("map-default-width", "Default").addOption("map-wide", "Wide line width").addOption("map-max", "Maximum line width").addOption("map-100", "100% pane width").setValue(this.plugin.settings.mapWidth).onChange((value) => { this.plugin.settings.mapWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Table width").setDesc("Default width for table and Dataview blocks").addDropdown((dropdown) => dropdown.addOption("table-default-width", "Default").addOption("table-wide", "Wide line width").addOption("table-max", "Maximum line width").addOption("table-100", "100% pane width").setValue(this.plugin.settings.tableWidth).onChange((value) => { this.plugin.settings.tableWidth = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); containerEl.createEl("br"); containerEl.createEl("h3"); containerEl.createEl("h3", { text: "Typography" }); new import_obsidian.Setting(containerEl).setName("Text font size").setDesc("Used for the main text (default 16)").addText((text) => text.setPlaceholder("16").setValue((this.plugin.settings.textNormal || "") + "").onChange((value) => { this.plugin.settings.textNormal = parseFloat(value); this.plugin.saveData(this.plugin.settings); this.plugin.setFontSize(); })); new import_obsidian.Setting(containerEl).setName("Small font size").setDesc("Used for text in the sidebars and tabs (default 13)").addText((text) => text.setPlaceholder("13").setValue((this.plugin.settings.textSmall || "") + "").onChange((value) => { this.plugin.settings.textSmall = parseFloat(value); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Line height").setDesc("Line height of text (default 1.5)").addText((text) => text.setPlaceholder("1.5").setValue((this.plugin.settings.lineHeight || "") + "").onChange((value) => { this.plugin.settings.lineHeight = parseFloat(value); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Normal line width").setDesc("Number of characters per line (default 40)").addText((text) => text.setPlaceholder("40").setValue((this.plugin.settings.lineWidth || "") + "").onChange((value) => { this.plugin.settings.lineWidth = parseInt(value.trim()); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Wide line width").setDesc("Number of characters per line for wide elements (default 50)").addText((text) => text.setPlaceholder("50").setValue((this.plugin.settings.lineWidthWide || "") + "").onChange((value) => { this.plugin.settings.lineWidthWide = parseInt(value.trim()); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Maximum line width %").setDesc("Percentage of space inside a pane that a line can fill (default 88)").addText((text) => text.setPlaceholder("88").setValue((this.plugin.settings.maxWidth || "") + "").onChange((value) => { this.plugin.settings.maxWidth = parseInt(value.trim()); this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); new import_obsidian.Setting(containerEl).setName("Editor font").setDesc("Overrides the text font defined in Obsidian Appearance settings when in edit mode").addText((text) => text.setPlaceholder("").setValue((this.plugin.settings.editorFont || "") + "").onChange((value) => { this.plugin.settings.editorFont = value; this.plugin.saveData(this.plugin.settings); this.plugin.refresh(); })); containerEl.createEl("br"); containerEl.createEl("h3", { text: "Support development" }); const donateText = containerEl.createEl("p"); donateText.appendChild(createEl("span", { text: "If you enjoy Minimal, consider " })); donateText.appendChild(createEl("a", { text: "buying me a coffee", href: "https://www.buymeacoffee.com/kepano" })); donateText.appendChild(createEl("span", { text: ", and following me on Twitter " })); donateText.appendChild(createEl("a", { text: "@kepano", href: "https://twitter.com/kepano" })); const div = containerEl.createEl("div", { cls: "minimal-donation" }); const parser = new DOMParser(); div.appendChild(createDonateButton("https://www.buymeacoffee.com/kepano", parser.parseFromString(buyMeACoffee, "text/xml").documentElement)); } }; var createDonateButton = (link, img) => { const a = document.createElement("a"); a.setAttribute("href", link); a.addClass("minimal-donate-button"); a.appendChild(img); return a; }; var buyMeACoffee = ` `; //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQXBwLCBXb3Jrc3BhY2UsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gJ29ic2lkaWFuJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pbmltYWxUaGVtZSBleHRlbmRzIFBsdWdpbiB7XHJcblxyXG4gIHNldHRpbmdzOiBNaW5pbWFsU2V0dGluZ3M7XHJcblxyXG4gIGFzeW5jIG9ubG9hZCgpIHtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xyXG5cclxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgTWluaW1hbFNldHRpbmdUYWIodGhpcy5hcHAsIHRoaXMpKTtcclxuXHJcbiAgICB0aGlzLmFkZFN0eWxlKCk7XHJcblxyXG4gICAgLy8gV2F0Y2ggZm9yIHN5c3RlbSBjaGFuZ2VzIHRvIGNvbG9yIHRoZW1lIFxyXG5cclxuICAgIGxldCBtZWRpYSA9IHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZVN5c3RlbVRoZW1lID0gKCkgPT4ge1xyXG4gICAgICBpZiAobWVkaWEubWF0Y2hlcyAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdMaWdodCBtb2RlIGFjdGl2ZScpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSk7XHJcblxyXG4gICAgLy8gUmVtb3ZlIHN5c3RlbSB0aGVtZSBsaXN0ZW5lciB3aGVuIHdlIHVubG9hZFxyXG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB1cGRhdGVTeXN0ZW1UaGVtZSkpO1xyXG5cclxuICAgIHVwZGF0ZVN5c3RlbVRoZW1lKCk7XHJcblxyXG4gICAgLy8gQ2hlY2sgc3RhdGUgb2YgT2JzaWRpYW4gU2V0dGluZ3NcclxuICAgIGxldCBzZXR0aW5nc1VwZGF0ZSA9ICgpID0+IHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBjb25zdCBmb250U2l6ZSA9IHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnYmFzZUZvbnRTaXplJyk7XHJcbiAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IGZvbnRTaXplO1xyXG5cclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICBpZiAodGhpcy5hcHAudmF1bHQuZ2V0Q29uZmlnKCdmb2xkSGVhZGluZycpKSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdGb2xkaW5nIGlzIG9uJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5mb2xkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnRm9sZGluZyBpcyBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9sZGluZycsIHRoaXMuc2V0dGluZ3MuZm9sZGluZyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygnc2hvd0xpbmVOdW1iZXInKSkge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGluZU51bWJlcnMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpbmUgbnVtYmVycyBhcmUgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpbmVOdW1iZXJzID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGluZSBudW1iZXJzIGFyZSBvZmYnKTtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtbGluZS1udW1zJywgdGhpcy5zZXR0aW5ncy5saW5lTnVtYmVycyk7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgaWYgKHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygncmVhZGFibGVMaW5lTGVuZ3RoJykpIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnUmVhZGFibGUgbGluZSBsZW5ndGggaXMgb24nKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1JlYWRhYmxlIGxpbmUgbGVuZ3RoIGlzIG9mZicpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtcmVhZGFibGUnLCB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGluZUxlbmd0aCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1yZWFkYWJsZS1vZmYnLCAhdGhpcy5zZXR0aW5ncy5yZWFkYWJsZUxpbmVMZW5ndGgpO1xyXG4gIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgbGV0IHNpZGViYXJVcGRhdGUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNpZGViYXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ21vZC1sZWZ0LXNwbGl0JylbMF07XHJcbiAgICAgIGNvbnN0IHJpYmJvbkVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc2lkZS1kb2NrLXJpYmJvbicpWzBdO1xyXG4gICAgICBpZiAoc2lkZWJhckVsICYmIHJpYmJvbkVsICYmIHRoaXMuYXBwLnZhdWx0LmdldENvbmZpZygndGhlbWUnKSA9PSAnbW9vbnN0b25lJyAmJiB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPT0gJ21pbmltYWwtbGlnaHQtY29udHJhc3QnKSB7XHJcbiAgICAgICAgc2lkZWJhckVsLmFkZENsYXNzKCd0aGVtZS1kYXJrJyk7XHJcbiAgICAgICAgcmliYm9uRWwuYWRkQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfSBlbHNlIGlmIChzaWRlYmFyRWwgJiYgcmliYm9uRWwpIHtcclxuICAgICAgICBzaWRlYmFyRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTsgXHJcbiAgICAgICAgcmliYm9uRWwucmVtb3ZlQ2xhc3MoJ3RoZW1lLWRhcmsnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAudmF1bHQub24oJ2NvbmZpZy1jaGFuZ2VkJywgc2V0dGluZ3NVcGRhdGUpKTtcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudChhcHAud29ya3NwYWNlLm9uKCdjc3MtY2hhbmdlJywgc2lkZWJhclVwZGF0ZSkpO1xyXG5cclxuICAgIHNldHRpbmdzVXBkYXRlKCk7XHJcbiAgICBcclxuICAgIGFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKSA9PiB7XHJcbiAgICAgIHNpZGViYXJVcGRhdGUoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGxpZ2h0U3R5bGVzID0gWydtaW5pbWFsLWxpZ2h0JywgJ21pbmltYWwtbGlnaHQtdG9uYWwnLCAnbWluaW1hbC1saWdodC1jb250cmFzdCcsICdtaW5pbWFsLWxpZ2h0LXdoaXRlJ107XHJcbiAgICBjb25zdCBkYXJrU3R5bGVzID0gWydtaW5pbWFsLWRhcmsnLCAnbWluaW1hbC1kYXJrLXRvbmFsJywgJ21pbmltYWwtZGFyay1ibGFjayddO1xyXG4gICAgY29uc3QgaW1nR3JpZFN0eWxlcyA9IFsnaW1nLWdyaWQnLCdpbWctZ3JpZC1yYXRpbycsJ2ltZy1ub2dyaWQnXTtcclxuICAgIGNvbnN0IHRhYmxlV2lkdGhTdHlsZXMgPSBbJ3RhYmxlLTEwMCcsJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLCd0YWJsZS13aWRlJywndGFibGUtbWF4J107XHJcbiAgICBjb25zdCBpZnJhbWVXaWR0aFN0eWxlcyA9IFsnaWZyYW1lLTEwMCcsJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJywnaWZyYW1lLXdpZGUnLCdpZnJhbWUtbWF4J107XHJcbiAgICBjb25zdCBpbWdXaWR0aFN0eWxlcyA9IFsnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJywnaW1nLXdpZGUnLCdpbWctbWF4J107XHJcbiAgICBjb25zdCBtYXBXaWR0aFN0eWxlcyA9IFsnbWFwLTEwMCcsJ21hcC1kZWZhdWx0LXdpZHRoJywnbWFwLXdpZGUnLCdtYXAtbWF4J107XHJcbiAgICBjb25zdCBjaGFydFdpZHRoU3R5bGVzID0gWydjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJywnY2hhcnQtd2lkZScsJ2NoYXJ0LW1heCddO1xyXG4gICAgY29uc3QgdGhlbWUgPSBbJ21vb25zdG9uZScsICdvYnNpZGlhbiddO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnaW5jcmVhc2UtYm9keS1mb250LXNpemUnLFxyXG4gICAgICBuYW1lOiAnSW5jcmVhc2UgYm9keSBmb250IHNpemUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCA9IHRoaXMuc2V0dGluZ3MudGV4dE5vcm1hbCArIDAuNTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMuc2V0Rm9udFNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdkZWNyZWFzZS1ib2R5LWZvbnQtc2l6ZScsXHJcbiAgICAgIG5hbWU6ICdEZWNyZWFzZSBib2R5IGZvbnQgc2l6ZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsID0gdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsIC0gMC41O1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5zZXRGb250U2l6ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgXHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWN5Y2xlJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gZGFyayBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSBkYXJrU3R5bGVzWyhkYXJrU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpICsgMSkgJSBkYXJrU3R5bGVzLmxlbmd0aF07XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTsgIFxyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtY3ljbGUnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBsaWdodCBtb2RlIHN0eWxlcycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gbGlnaHRTdHlsZXNbKGxpZ2h0U3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5saWdodFN0eWxlKSArIDEpICUgbGlnaHRTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1oaWRkZW4tYm9yZGVycycsXHJcbiAgICAgIG5hbWU6ICdUb2dnbGUgc2lkZWJhciBib3JkZXJzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUgPSAhdGhpcy5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLWNvbG9yZnVsLWhlYWRpbmdzJyxcclxuICAgICAgbmFtZTogJ1RvZ2dsZSBjb2xvcmZ1bCBoZWFkaW5ncycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWZvY3VzLW1vZGUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGZvY3VzIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlID0gIXRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY29sb3JmdWwtZnJhbWUnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGNvbG9yZnVsIHdpbmRvdyBmcmFtZScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lID0gIXRoaXMuc2V0dGluZ3MuY29sb3JmdWxGcmFtZTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtdGFibGUtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiB0YWJsZSB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGggPSB0YWJsZVdpZHRoU3R5bGVzWyh0YWJsZVdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy50YWJsZVdpZHRoKSArIDEpICUgdGFibGVXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1pbWFnZS13aWR0aCcsXHJcbiAgICAgIG5hbWU6ICdDeWNsZSBiZXR3ZWVuIGltYWdlIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaW1nV2lkdGggPSBpbWdXaWR0aFN0eWxlc1soaW1nV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmltZ1dpZHRoKSArIDEpICUgaW1nV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtaWZyYW1lLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0N5Y2xlIGJldHdlZW4gaWZyYW1lIHdpZHRoIG9wdGlvbnMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuaWZyYW1lV2lkdGggPSBpZnJhbWVXaWR0aFN0eWxlc1soaWZyYW1lV2lkdGhTdHlsZXMuaW5kZXhPZih0aGlzLnNldHRpbmdzLmlmcmFtZVdpZHRoKSArIDEpICUgaWZyYW1lV2lkdGhTdHlsZXMubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ2N5Y2xlLW1pbmltYWwtY2hhcnQtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBjaGFydCB3aWR0aCBvcHRpb25zJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGggPSBjaGFydFdpZHRoU3R5bGVzWyhjaGFydFdpZHRoU3R5bGVzLmluZGV4T2YodGhpcy5zZXR0aW5ncy5jaGFydFdpZHRoKSArIDEpICUgY2hhcnRXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAnY3ljbGUtbWluaW1hbC1tYXAtd2lkdGgnLFxyXG4gICAgICBuYW1lOiAnQ3ljbGUgYmV0d2VlbiBtYXAgd2lkdGggb3B0aW9ucycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5tYXBXaWR0aCA9IG1hcFdpZHRoU3R5bGVzWyhtYXBXaWR0aFN0eWxlcy5pbmRleE9mKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpICsgMSkgJSBtYXBXaWR0aFN0eWxlcy5sZW5ndGhdO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtaW1nLWdyaWQnLFxyXG4gICAgICBuYW1lOiAnVG9nZ2xlIGltYWdlIGdyaWRzJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmltZ0dyaWQgPSAhdGhpcy5zZXR0aW5ncy5pbWdHcmlkO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc3dpdGNoJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBiZXR3ZWVuIGxpZ2h0IGFuZCBkYXJrIG1vZGUnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MudGhlbWUgPSB0aGVtZVsodGhlbWUuaW5kZXhPZih0aGlzLnNldHRpbmdzLnRoZW1lKSArIDEpICUgdGhlbWUubGVuZ3RoXTtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVGhlbWUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1kZWZhdWx0JyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFN0eWxlID0gJ21pbmltYWwtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbGlnaHQtd2hpdGUnLFxyXG4gICAgICBuYW1lOiAnVXNlIGxpZ2h0IG1vZGUgKGFsbCB3aGl0ZSknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LXdoaXRlJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWxpZ2h0LXRvbmFsJyxcclxuICAgICAgbmFtZTogJ1VzZSBsaWdodCBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSAnbWluaW1hbC1saWdodC10b25hbCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1saWdodC1jb250cmFzdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgbGlnaHQgbW9kZSAoaGlnaCBjb250cmFzdCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSA9ICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRhcmstZGVmYXVsdCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChkZWZhdWx0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUgPSAnbWluaW1hbC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgIG5hbWU6ICdVc2UgZGFyayBtb2RlIChsb3cgY29udHJhc3QpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstdG9uYWwnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kYXJrLWJsYWNrJyxcclxuICAgICAgbmFtZTogJ1VzZSBkYXJrIG1vZGUgKHRydWUgYmxhY2spJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSA9ICdtaW5pbWFsLWRhcmstYmxhY2snO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1hdG9tLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gQXRvbSAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtYXRvbS1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGVmYXVsdC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIGRlZmF1bHQgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWRlZmF1bHQtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWdydXZib3gtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBHcnV2Ym94IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1ncnV2Ym94LWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ldmVyZm9yZXN0LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gRXZlcmZvcmVzdCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbWFjb3MtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBtYWNPUyAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtbWFjb3MtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW5vdGlvbi1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIE5vdGlvbiAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtbm90aW9uLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3JkLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gTm9yZCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtbm9yZC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc29sYXJpemVkLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gU29sYXJpemVkIChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXRoaW5ncy1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIFRoaW5ncyAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtdGhpbmdzLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1hdG9tLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGNvbG9yIHNjaGVtZSB0byBBdG9tIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtYXRvbS1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZHJhY3VsYS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBjb2xvciBzY2hlbWUgdG8gRHJhY3VsYSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRyYWN1bGEtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gZGVmYXVsdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWRlZmF1bHQtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWdydXZib3gtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gR3J1dmJveCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWdydXZib3gtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gRXZlcmZvcmVzdCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW1hY29zLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBtYWNPUyAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLW1hY29zLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3JkLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIE5vcmQgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ub3JkLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3Rpb24tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gTm90aW9uIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtbm90aW9uLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gU29sYXJpemVkIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtc29sYXJpemVkLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC10aGluZ3MtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gVGhpbmdzIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtdGhpbmdzLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZXYtYmxvY2std2lkdGgnLFxyXG4gICAgICBuYW1lOiAnRGV2IFx1MjAxNCBTaG93IGJsb2NrIHdpZHRocycsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoID0gIXRoaXMuc2V0dGluZ3MuZGV2QmxvY2tXaWR0aDtcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2goKVxyXG4gIH1cclxuXHJcbiAgb251bmxvYWQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnVW5sb2FkaW5nIE1pbmltYWwgVGhlbWUgU2V0dGluZ3MgcGx1Z2luJyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBsb2FkU2V0dGluZ3MoKSB7XHJcbiAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihERUZBVUxUX1NFVFRJTkdTLCBhd2FpdCB0aGlzLmxvYWREYXRhKCkpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZVNldHRpbmdzKCkge1xyXG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICB9XHJcblxyXG4gIC8vIHJlZnJlc2ggZnVuY3Rpb24gZm9yIHdoZW4gd2UgY2hhbmdlIHNldHRpbmdzXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIC8vIHJlLWxvYWQgdGhlIHN0eWxlXHJcbiAgICB0aGlzLnVwZGF0ZVN0eWxlKClcclxuICB9XHJcblxyXG4gIC8vIGFkZCB0aGUgc3R5bGluZyBlbGVtZW50cyB3ZSBuZWVkXHJcbiAgYWRkU3R5bGUoKSB7XHJcbiAgICAvLyBhZGQgYSBjc3MgYmxvY2sgZm9yIG91ciBzZXR0aW5ncy1kZXBlbmRlbnQgc3R5bGVzXHJcbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xyXG4gICAgY3NzLmlkID0gJ21pbmltYWwtdGhlbWUnO1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKGNzcyk7XHJcblxyXG4gICAgLy8gYWRkIHRoZSBtYWluIGNsYXNzXHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ21pbmltYWwtdGhlbWUnKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgdGhlIHN0eWxlIHdpdGggdGhlIHNldHRpbmdzLWRlcGVuZGVudCBzdHlsZXNcclxuICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcclxuICB9XHJcblxyXG4gIHNldEZvbnRTaXplKCkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCdiYXNlRm9udFNpemUnLCB0aGlzLnNldHRpbmdzLnRleHROb3JtYWwpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudXBkYXRlRm9udFNpemUoKTtcclxuICB9XHJcblxyXG4gIC8vIHVwZGF0ZSB0aGUgc3R5bGVzIChhdCB0aGUgc3RhcnQsIG9yIGFzIHRoZSByZXN1bHQgb2YgYSBzZXR0aW5ncyBjaGFuZ2UpXHJcbiAgdXBkYXRlU3R5bGUoKSB7XHJcbiAgICB0aGlzLnJlbW92ZVN0eWxlKCk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2JvcmRlcnMtbm9uZScsICF0aGlzLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdjb2xvcmZ1bC1oZWFkaW5ncycsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2NvbG9yZnVsLWZyYW1lJywgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnY29sb3JmdWwtYWN0aXZlJywgdGhpcy5zZXR0aW5ncy5jb2xvcmZ1bEFjdGl2ZVN0YXRlcyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9jdXMtbW9kZScsIHRoaXMuc2V0dGluZ3MuZm9jdXNNb2RlKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbGlua3MtaW50LW9uJywgdGhpcy5zZXR0aW5ncy51bmRlcmxpbmVJbnRlcm5hbCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xpbmtzLWV4dC1vbicsIHRoaXMuc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdzeXN0ZW0tc2hhZGUnLCB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnZnVsbC13aWR0aC1tZWRpYScsIHRoaXMuc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdpbWctZ3JpZCcsIHRoaXMuc2V0dGluZ3MuaW1nR3JpZCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZGV2LWJsb2NrLXdpZHRoJywgdGhpcy5zZXR0aW5ncy5kZXZCbG9ja1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1zdGF0dXMtb2ZmJywgIXRoaXMuc2V0dGluZ3MubWluaW1hbFN0YXR1cyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Z1bGwtZmlsZS1uYW1lcycsICF0aGlzLnNldHRpbmdzLnRyaW1OYW1lcyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xhYmVsZWQtbmF2JywgdGhpcy5zZXR0aW5ncy5sYWJlbGVkTmF2KTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnbWluaW1hbC1mb2xkaW5nJywgdGhpcy5zZXR0aW5ncy5mb2xkaW5nKTtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCd0YWJsZS13aWRlJywndGFibGUtbWF4JywndGFibGUtMTAwJywndGFibGUtZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdpZnJhbWUtd2lkZScsJ2lmcmFtZS1tYXgnLCdpZnJhbWUtMTAwJywnaWZyYW1lLWRlZmF1bHQtd2lkdGgnLFxyXG4gICAgICAnaW1nLXdpZGUnLCdpbWctbWF4JywnaW1nLTEwMCcsJ2ltZy1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ2NoYXJ0LXdpZGUnLCdjaGFydC1tYXgnLCdjaGFydC0xMDAnLCdjaGFydC1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ21hcC13aWRlJywnbWFwLW1heCcsJ21hcC0xMDAnLCdtYXAtZGVmYXVsdC13aWR0aCcpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmNoYXJ0V2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLnRhYmxlV2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmltZ1dpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5pZnJhbWVXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubWFwV2lkdGgpO1xyXG5cclxuICAgIC8vIGdldCB0aGUgY3VzdG9tIGNzcyBlbGVtZW50XHJcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtaW5pbWFsLXRoZW1lJyk7XHJcbiAgICBpZiAoIWVsKSB0aHJvdyBcIm1pbmltYWwtdGhlbWUgZWxlbWVudCBub3QgZm91bmQhXCI7XHJcbiAgICBlbHNlIHtcclxuICAgICAgLy8gc2V0IHRoZSBzZXR0aW5ncy1kZXBlbmRlbnQgY3NzXHJcbiAgICAgIGVsLmlubmVyVGV4dCA9IFxyXG4gICAgICAgICdib2R5Lm1pbmltYWwtdGhlbWV7J1xyXG4gICAgICAgICsgJy0tZm9udC11aS1zbWFsbDonICsgdGhpcy5zZXR0aW5ncy50ZXh0U21hbGwgKyAncHg7J1xyXG4gICAgICAgICsgJy0tbGluZS1oZWlnaHQ6JyArIHRoaXMuc2V0dGluZ3MubGluZUhlaWdodCArICc7J1xyXG4gICAgICAgICsgJy0tbGluZS13aWR0aDonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGggKyAncmVtOydcclxuICAgICAgICArICctLWxpbmUtd2lkdGgtd2lkZTonICsgdGhpcy5zZXR0aW5ncy5saW5lV2lkdGhXaWRlICsgJ3JlbTsnXHJcbiAgICAgICAgKyAnLS1tYXgtd2lkdGg6JyArIHRoaXMuc2V0dGluZ3MubWF4V2lkdGggKyAnJTsnXHJcbiAgICAgICAgKyAnLS1mb250LWVkaXRvci1vdmVycmlkZTonICsgdGhpcy5zZXR0aW5ncy5lZGl0b3JGb250ICsgJzsnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIHJlZnJlc2hTeXN0ZW1UaGVtZSgpIHtcclxuICAgIGNvbnN0IGlzRGFya01vZGUgPSB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXNcclxuXHJcbiAgICBpZiAoaXNEYXJrTW9kZSAmJiB0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0RhcmsgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpXHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnTGlnaHQgbW9kZSBhY3RpdmUnKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKVxyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXJrU3R5bGUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAndGhlbWUtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtZGFyay10b25hbCcsXHJcbiAgICAgICdtaW5pbWFsLWRhcmstYmxhY2snXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSk7XHJcblxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAuc2V0VGhlbWUoJ29ic2lkaWFuJyk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgJ29ic2lkaWFuJyk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlnaHRTdHlsZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICd0aGVtZS1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1saWdodC10b25hbCcsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQtd2hpdGUnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUpO1xyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnNldFRoZW1lKCdtb29uc3RvbmUnKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnZhdWx0LnNldENvbmZpZygndGhlbWUnLCAnbW9vbnN0b25lJyk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGFya1NjaGVtZSgpIHtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3MoXHJcbiAgICAgICdtaW5pbWFsLWF0b20tZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWRyYWN1bGEtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWV2ZXJmb3Jlc3QtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWdydXZib3gtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLW1hY29zLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ub3JkLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ub3Rpb24tZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLXNvbGFyaXplZC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtdGhpbmdzLWRhcmsnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlnaHRTY2hlbWUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAnbWluaW1hbC1hdG9tLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZGVmYXVsdC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ncnV2Ym94LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbWFjb3MtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ub3JkLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbm90aW9uLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtdGhpbmdzLWxpZ2h0J1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUaGVtZSgpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnNldFRoZW1lKHRoaXMuc2V0dGluZ3MudGhlbWUpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCd0aGVtZScsIHRoaXMuc2V0dGluZ3MudGhlbWUpO1xyXG4gICAgdGhpcy5hcHAud29ya3NwYWNlLnRyaWdnZXIoJ2Nzcy1jaGFuZ2UnKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVN0eWxlKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcygnbWluaW1hbC1saWdodCcsJ21pbmltYWwtbGlnaHQtdG9uYWwnLCdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JywnbWluaW1hbC1saWdodC13aGl0ZScsJ21pbmltYWwtZGFyaycsJ21pbmltYWwtZGFyay10b25hbCcsJ21pbmltYWwtZGFyay1ibGFjaycpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U3R5bGUsdGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmludGVyZmFjZSBNaW5pbWFsU2V0dGluZ3Mge1xyXG4gIHRoZW1lOiBzdHJpbmc7XHJcbiAgbGlnaHRTdHlsZTogc3RyaW5nO1xyXG4gIGRhcmtTdHlsZTogc3RyaW5nO1xyXG4gIGxpZ2h0U2NoZW1lOiBzdHJpbmc7XHJcbiAgZGFya1NjaGVtZTogc3RyaW5nO1xyXG4gIGVkaXRvckZvbnQ6IHN0cmluZztcclxuICBjb2xvcmZ1bEhlYWRpbmdzOiBib29sZWFuO1xyXG4gIGNvbG9yZnVsRnJhbWU6IGJvb2xlYW47XHJcbiAgY29sb3JmdWxBY3RpdmVTdGF0ZXM6IGJvb2xlYW4sXHJcbiAgdHJpbU5hbWVzOiBib29sZWFuO1xyXG4gIGxhYmVsZWROYXY6IGJvb2xlYW47XHJcbiAgYm9yZGVyc1RvZ2dsZTogYm9vbGVhbjtcclxuICBmb2N1c01vZGU6IGJvb2xlYW47XHJcbiAgbGluZUhlaWdodDogbnVtYmVyO1xyXG4gIGxpbmVXaWR0aDogbnVtYmVyO1xyXG4gIGxpbmVXaWR0aFdpZGU6IG51bWJlcjtcclxuICBtYXhXaWR0aDogbnVtYmVyO1xyXG4gIGltZ0dyaWQ6IGJvb2xlYW47XHJcbiAgZGV2QmxvY2tXaWR0aDogYm9vbGVhbjtcclxuICB0YWJsZVdpZHRoOiBzdHJpbmc7XHJcbiAgaWZyYW1lV2lkdGg6IHN0cmluZztcclxuICBpbWdXaWR0aDogc3RyaW5nO1xyXG4gIGNoYXJ0V2lkdGg6IHN0cmluZztcclxuICBtYXBXaWR0aDogc3RyaW5nO1xyXG4gIGZ1bGxXaWR0aE1lZGlhOiBib29sZWFuLFxyXG4gIG1pbmltYWxTdGF0dXM6IGJvb2xlYW4sXHJcbiAgdGV4dE5vcm1hbDogbnVtYmVyO1xyXG4gIHRleHRTbWFsbDogbnVtYmVyO1xyXG4gIHVuZGVybGluZUludGVybmFsOiBib29sZWFuO1xyXG4gIHVuZGVybGluZUV4dGVybmFsOiBib29sZWFuO1xyXG4gIHVzZVN5c3RlbVRoZW1lOiBib29sZWFuO1xyXG4gIGZvbGRpbmc6IGJvb2xlYW47XHJcbiAgbGluZU51bWJlcnM6IGJvb2xlYW47XHJcbiAgcmVhZGFibGVMaW5lTGVuZ3RoOiBib29sZWFuO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1NFVFRJTkdTOiBNaW5pbWFsU2V0dGluZ3MgPSB7XHJcbiAgdGhlbWU6ICdtb29uc3RvbmUnLFxyXG4gIGxpZ2h0U3R5bGU6ICdtaW5pbWFsLWxpZ2h0JyxcclxuICBkYXJrU3R5bGU6ICdtaW5pbWFsLWRhcmsnLFxyXG4gIGxpZ2h0U2NoZW1lOiAnbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICBkYXJrU2NoZW1lOiAnbWluaW1hbC1kZWZhdWx0LWRhcmsnLFxyXG4gIGVkaXRvckZvbnQ6ICcnLFxyXG4gIGxpbmVIZWlnaHQ6IDEuNSxcclxuICBsaW5lV2lkdGg6IDQwLFxyXG4gIGxpbmVXaWR0aFdpZGU6IDUwLFxyXG4gIG1heFdpZHRoOiA4OCxcclxuICB0ZXh0Tm9ybWFsOiAxNixcclxuICB0ZXh0U21hbGw6IDEzLFxyXG4gIGltZ0dyaWQ6IGZhbHNlLFxyXG4gIGltZ1dpZHRoOiAnaW1nLWRlZmF1bHQtd2lkdGgnLFxyXG4gIHRhYmxlV2lkdGg6ICd0YWJsZS1kZWZhdWx0LXdpZHRoJyxcclxuICBpZnJhbWVXaWR0aDogJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJyxcclxuICBtYXBXaWR0aDogJ21hcC1kZWZhdWx0LXdpZHRoJyxcclxuICBjaGFydFdpZHRoOiAnY2hhcnQtZGVmYXVsdC13aWR0aCcsXHJcbiAgY29sb3JmdWxIZWFkaW5nczogZmFsc2UsXHJcbiAgY29sb3JmdWxGcmFtZTogZmFsc2UsXHJcbiAgY29sb3JmdWxBY3RpdmVTdGF0ZXM6IGZhbHNlLFxyXG4gIHRyaW1OYW1lczogdHJ1ZSxcclxuICBsYWJlbGVkTmF2OiBmYWxzZSxcclxuICBmdWxsV2lkdGhNZWRpYTogdHJ1ZSxcclxuICBib3JkZXJzVG9nZ2xlOiB0cnVlLFxyXG4gIG1pbmltYWxTdGF0dXM6IHRydWUsXHJcbiAgZm9jdXNNb2RlOiBmYWxzZSxcclxuICB1bmRlcmxpbmVJbnRlcm5hbDogdHJ1ZSxcclxuICB1bmRlcmxpbmVFeHRlcm5hbDogdHJ1ZSxcclxuICB1c2VTeXN0ZW1UaGVtZTogZmFsc2UsXHJcbiAgZm9sZGluZzogdHJ1ZSxcclxuICBsaW5lTnVtYmVyczogZmFsc2UsXHJcbiAgcmVhZGFibGVMaW5lTGVuZ3RoOiBmYWxzZSxcclxuICBkZXZCbG9ja1dpZHRoOiBmYWxzZSxcclxufVxyXG5cclxuY2xhc3MgTWluaW1hbFNldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcclxuXHJcblxyXG4gIHBsdWdpbjogTWluaW1hbFRoZW1lO1xyXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IE1pbmltYWxUaGVtZSkge1xyXG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xyXG4gICAgdGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcbiAgfVxyXG5cclxuICBkaXNwbGF5KCk6IHZvaWQge1xyXG4gICAgbGV0IHtjb250YWluZXJFbH0gPSB0aGlzO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmVtcHR5KCk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ01pbmltYWwgVGhlbWUgU2V0dGluZ3MnfSk7XHJcblxyXG4gICAgY29uc3QgbWFpbkRlc2MgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcpO1xyXG5cclxuICAgICAgbWFpbkRlc2MuYXBwZW5kVGV4dCgnTmVlZCBoZWxwPyBFeHBsb3JlIHRoZSAnKTtcclxuICAgICAgbWFpbkRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIk1pbmltYWwgZG9jdW1lbnRhdGlvblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL21pbmltYWwuZ3VpZGVcIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRUZXh0KCcgb3IgdmlzaXQgdGhlICcpO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3Ryb25nJywge1xyXG4gICAgICAgICAgdGV4dDogXCIjbWluaW1hbFwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZFRleHQoJyBjaGFubmVsIGluIHRoZSBvZmZpY2lhbCBPYnNpZGlhbiBEaXNjb3JkLiBZb3UgY2FuIHN1cHBvcnQgY29udGludWVkIGRldmVsb3BtZW50IGJ5ICcpO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiYnV5aW5nIG1lIGEgY29mZmVlXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20va2VwYW5vXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgbWFpbkRlc2MuYXBwZW5kVGV4dCgnIFx1MjYxNScpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdDb2xvciBzY2hlbWUnfSk7XHJcblxyXG4gICAgY29uc3QgY29sb3JEZXNjID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnKTtcclxuXHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3BhbicsIHtcclxuICAgICAgICAgIHRleHQ6ICdUbyBjcmVhdGUgYSBjb21wbGV0ZWx5IGN1c3RvbSBjb2xvciBzY2hlbWUgdXNlICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgY29sb3JEZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJTdHlsZSBTZXR0aW5ncyBwbHVnaW5cIixcclxuICAgICAgICAgIGhyZWY6IFwib2JzaWRpYW46Ly9zaG93LXBsdWdpbj9pZD1vYnNpZGlhbi1zdHlsZS1zZXR0aW5nc1wiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbG9yRGVzYy5hcHBlbmRUZXh0KCcuJyk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnTGlnaHQgbW9kZSBjb2xvciBzY2hlbWUnKVxyXG4gICAgICAgIC5zZXREZXNjKCdQcmVzZXQgY29sb3Igb3B0aW9ucyBmb3IgbGlnaHQgbW9kZScpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRlZmF1bHQtbGlnaHQnLCdEZWZhdWx0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtYXRvbS1saWdodCcsJ0F0b20nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ldmVyZm9yZXN0LWxpZ2h0JywnRXZlcmZvcmVzdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWdydXZib3gtbGlnaHQnLCdHcnV2Ym94JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbWFjb3MtbGlnaHQnLCdtYWNPUycpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vcmQtbGlnaHQnLCdOb3JkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbm90aW9uLWxpZ2h0JywnTm90aW9uJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JywnU29sYXJpemVkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtdGhpbmdzLWxpZ2h0JywnVGhpbmdzJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFNjaGVtZSlcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFNjaGVtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnTGlnaHQgbW9kZSBiYWNrZ3JvdW5kIGNvbnRyYXN0JylcclxuICAgICAgICAuc2V0RGVzYygnTGV2ZWwgb2YgY29udHJhc3QgYmV0d2VlbiBzaWRlYmFyIGFuZCBtYWluIGNvbnRlbnQnKVxyXG4gICAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodC13aGl0ZScsJ0FsbCB3aGl0ZScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0LXRvbmFsJywnTG93IGNvbnRyYXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbGlnaHQtY29udHJhc3QnLCdIaWdoIGNvbnRyYXN0JylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFN0eWxlKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpZ2h0U3R5bGUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnRGFyayBtb2RlIGNvbG9yIHNjaGVtZScpXHJcbiAgICAgICAgLnNldERlc2MoJ1ByZXNldCBjb2xvcnMgb3B0aW9ucyBmb3IgZGFyayBtb2RlJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGVmYXVsdC1kYXJrJywnRGVmYXVsdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWF0b20tZGFyaycsJ0F0b20nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kcmFjdWxhLWRhcmsnLCdEcmFjdWxhJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZXZlcmZvcmVzdC1kYXJrJywnRXZlcmZvcmVzdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWdydXZib3gtZGFyaycsJ0dydXZib3gnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1tYWNvcy1kYXJrJywnbWFjT1MnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3JkLWRhcmsnLCdOb3JkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbm90aW9uLWRhcmsnLCdOb3Rpb24nKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsJ1NvbGFyaXplZCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXRoaW5ncy1kYXJrJywnVGhpbmdzJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU2NoZW1lKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU2NoZW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4udXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ0RhcmsgbW9kZSBiYWNrZ3JvdW5kIGNvbnRyYXN0JylcclxuICAgICAgICAuc2V0RGVzYygnTGV2ZWwgb2YgY29udHJhc3QgYmV0d2VlbiBzaWRlYmFyIGFuZCBtYWluIGNvbnRlbnQnKVxyXG4gICAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kYXJrJywnRGVmYXVsdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRhcmstdG9uYWwnLCdMb3cgY29udHJhc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1kYXJrLWJsYWNrJywnVHJ1ZSBibGFjaycpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGFya1N0eWxlKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU3R5bGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnYnInKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdGZWF0dXJlcyd9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01hdGNoIHN5c3RlbSBzZXR0aW5nIGZvciBsaWdodCBvciBkYXJrIG1vZGUnKVxyXG4gICAgICAuc2V0RGVzYygnQXV0b21hdGljYWxseSBzd2l0Y2ggYmFzZWQgb24geW91ciBPUyBzZXR0aW5nJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2hTeXN0ZW1UaGVtZSgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RleHQgbGFiZWxzIGZvciBwcmltYXJ5IG5hdmlnYXRpb24nKVxyXG4gICAgICAuc2V0RGVzYygnTmF2aWdhdGlvbiBpbiBsZWZ0IHNpZGViYXIgdXNlcyB0ZXh0IGxhYmVscyAoc2VlIGRvY3VtZW50YXRpb24gZm9yIGxvY2FsaXphdGlvbiBzdXBwb3J0KScpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5sYWJlbGVkTmF2KVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5sYWJlbGVkTmF2ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ29sb3JmdWwgd2luZG93IGZyYW1lJylcclxuICAgICAgLnNldERlc2MoJ1RoZSB0b3AgYXJlYSBvZiB0aGUgYXBwIHVzZXMgeW91ciBhY2NlbnQgY29sb3InKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxGcmFtZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxGcmFtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDb2xvcmZ1bCBhY3RpdmUgc3RhdGVzJylcclxuICAgICAgLnNldERlc2MoJ0FjdGl2ZSBmaWxlIGFuZCBtZW51IGl0ZW1zIHVzZSB5b3VyIGFjY2VudCBjb2xvcicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEFjdGl2ZVN0YXRlcylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxBY3RpdmVTdGF0ZXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQ29sb3JmdWwgaGVhZGluZ3MnKVxyXG4gICAgICAuc2V0RGVzYygnSGVhZGluZ3MgdXNlIGEgZGlmZmVyZW50IGNvbG9yIGZvciBlYWNoIHNpemUnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29sb3JmdWxIZWFkaW5ncyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNaW5pbWFsIHN0YXR1cyBiYXInKVxyXG4gICAgICAuc2V0RGVzYygnVXNlIG5hcnJvdyBzdGF0dXMgYmFyJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm1pbmltYWxTdGF0dXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1pbmltYWxTdGF0dXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUcmltIGZpbGUgbmFtZXMgaW4gc2lkZWJhcnMnKVxyXG4gICAgICAuc2V0RGVzYygnVXNlIGVsbGlwc2VzIHRvIGZpdCBmaWxlIG5hbWVzIG9uIGEgc2luZ2xlIGxpbmUnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudHJpbU5hbWVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy50cmltTmFtZXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnV29ya3NwYWNlIGJvcmRlcnMnKVxyXG4gICAgICAgIC5zZXREZXNjKCdEaXNwbGF5IGRpdmlkZXIgbGluZXMgYmV0d2VlbiB3b3Jrc3BhY2UgZWxlbWVudHMnKVxyXG4gICAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnRm9jdXMgbW9kZScpXHJcbiAgICAgIC5zZXREZXNjKCdIaWRlIHRhYiBiYXIgYW5kIHN0YXR1cyBiYXIsIGhvdmVyIHRvIGRpc3BsYXkgKGNhbiBiZSB0b2dnbGVkIHdpdGggaG90a2V5KScpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5mb2N1c01vZGUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmZvY3VzTW9kZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdVbmRlcmxpbmUgaW50ZXJuYWwgbGlua3MnKVxyXG4gICAgICAuc2V0RGVzYygnU2hvdyB1bmRlcmxpbmVzIG9uIGludGVybmFsIGxpbmtzJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUludGVybmFsKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVJbnRlcm5hbCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdVbmRlcmxpbmUgZXh0ZXJuYWwgbGlua3MnKVxyXG4gICAgICAuc2V0RGVzYygnU2hvdyB1bmRlcmxpbmVzIG9uIGV4dGVybmFsIGxpbmtzJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUV4dGVybmFsKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy51bmRlcmxpbmVFeHRlcm5hbCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXhpbWl6ZSBtZWRpYScpXHJcbiAgICAgIC5zZXREZXNjKCdJbWFnZXMgYW5kIHZpZGVvcyBmaWxsIHRoZSB3aWR0aCBvZiB0aGUgbGluZScpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5mdWxsV2lkdGhNZWRpYSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZnVsbFdpZHRoTWVkaWEgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnTGF5b3V0J30pO1xyXG5cclxuICAgIGNvbnN0IGxheW91dERlc2MgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcpO1xyXG5cclxuICAgICAgbGF5b3V0RGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3BhbicsIHtcclxuICAgICAgICAgIHRleHQ6ICdUaGUgZm9sbG93aW5nIG9wdGlvbnMgcmVxdWlyZSB0aGUgJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBsYXlvdXREZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJDb250ZXh0dWFsIFR5cG9ncmFwaHkgcGx1Z2luXCIsXHJcbiAgICAgICAgICBocmVmOiBcIm9ic2lkaWFuOi8vc2hvdy1wbHVnaW4/aWQ9b2JzaWRpYW4tY29udGV4dHVhbC10eXBvZ3JhcGh5XCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgbGF5b3V0RGVzYy5hcHBlbmRUZXh0KCcuIFRoZXNlIG9wdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBvbiBhIHBlci1maWxlIGJhc2lzIHVzaW5nIFlBTUwsICcpO1xyXG4gICAgICBsYXlvdXREZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJzZWUgZG9jdW1lbnRhdGlvblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL21pbmltYWwuZ3VpZGUvRmVhdHVyZXMvQmxvY2srd2lkdGhcIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBsYXlvdXREZXNjLmFwcGVuZFRleHQoJyBmb3IgZGV0YWlscy4nKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0ltYWdlIGdyaWRzJylcclxuICAgICAgLnNldERlc2MoJ1R1cm4gY29uc2VjdXRpdmUgaW1hZ2VzIGludG8gY29sdW1ucyBcdTIwMTQgdG8gbWFrZSBhIG5ldyByb3csIGFkZCBhbiBleHRyYSBsaW5lIGJyZWFrIGJldHdlZW4gaW1hZ2VzJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ0dyaWQpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ0dyaWQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDaGFydCB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBjaGFydCBibG9ja3MnKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignY2hhcnQtbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaGFydFdpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaGFydFdpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnSWZyYW1lIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIGlmcmFtZSBibG9ja3MnKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdpZnJhbWUtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpZnJhbWUtbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpZnJhbWUtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaWZyYW1lV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmlmcmFtZVdpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnSW1hZ2Ugd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgaW1hZ2UgYmxvY2tzJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignaW1nLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaW1nLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaW1nLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ1dpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pbWdXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01hcCB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBtYXAgYmxvY2tzJylcclxuICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgLmFkZE9wdGlvbignbWFwLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignbWFwLW1heCcsJ01heGltdW0gbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignbWFwLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm1hcFdpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXBXaWR0aCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RhYmxlIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIHRhYmxlIGFuZCBEYXRhdmlldyBibG9ja3MnKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtd2lkZScsJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbigndGFibGUtbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50YWJsZVdpZHRoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy50YWJsZVdpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ1R5cG9ncmFwaHknfSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdUZXh0IGZvbnQgc2l6ZScpXHJcbiAgICAgIC5zZXREZXNjKCdVc2VkIGZvciB0aGUgbWFpbiB0ZXh0IChkZWZhdWx0IDE2KScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignMTYnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dE5vcm1hbCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0Tm9ybWFsID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXRGb250U2l6ZSgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1NtYWxsIGZvbnQgc2l6ZScpXHJcbiAgICAgIC5zZXREZXNjKCdVc2VkIGZvciB0ZXh0IGluIHRoZSBzaWRlYmFycyBhbmQgdGFicyAoZGVmYXVsdCAxMyknKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzEzJylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHRTbWFsbCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0U21hbGwgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdMaW5lIGhlaWdodCcpXHJcbiAgICAgIC5zZXREZXNjKCdMaW5lIGhlaWdodCBvZiB0ZXh0IChkZWZhdWx0IDEuNSknKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzEuNScpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lSGVpZ2h0IHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdOb3JtYWwgbGluZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdOdW1iZXIgb2YgY2hhcmFjdGVycyBwZXIgbGluZSAoZGVmYXVsdCA0MCknKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzQwJylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGggPSBwYXJzZUludCh2YWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1dpZGUgbGluZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdOdW1iZXIgb2YgY2hhcmFjdGVycyBwZXIgbGluZSBmb3Igd2lkZSBlbGVtZW50cyAoZGVmYXVsdCA1MCknKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJzUwJylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aFdpZGUgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoV2lkZSA9IHBhcnNlSW50KHZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWF4aW11bSBsaW5lIHdpZHRoICUnKVxyXG4gICAgICAuc2V0RGVzYygnUGVyY2VudGFnZSBvZiBzcGFjZSBpbnNpZGUgYSBwYW5lIHRoYXQgYSBsaW5lIGNhbiBmaWxsIChkZWZhdWx0IDg4KScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignODgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubWF4V2lkdGggfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWF4V2lkdGggPSBwYXJzZUludCh2YWx1ZS50cmltKCkpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnRWRpdG9yIGZvbnQnKVxyXG4gICAgICAuc2V0RGVzYygnT3ZlcnJpZGVzIHRoZSB0ZXh0IGZvbnQgZGVmaW5lZCBpbiBPYnNpZGlhbiBBcHBlYXJhbmNlIHNldHRpbmdzIHdoZW4gaW4gZWRpdCBtb2RlJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MuZWRpdG9yRm9udCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5lZGl0b3JGb250ID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdTdXBwb3J0IGRldmVsb3BtZW50J30pO1xyXG5cclxuICAgIGNvbnN0IGRvbmF0ZVRleHQgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcpO1xyXG5cclxuICAgICAgZG9uYXRlVGV4dC5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnc3BhbicsIHtcclxuICAgICAgICAgIHRleHQ6ICdJZiB5b3UgZW5qb3kgTWluaW1hbCwgY29uc2lkZXIgJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBkb25hdGVUZXh0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJidXlpbmcgbWUgYSBjb2ZmZWVcIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9rZXBhbm9cIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBkb25hdGVUZXh0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJywgYW5kIGZvbGxvd2luZyBtZSBvbiBUd2l0dGVyICdcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgZG9uYXRlVGV4dC5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiQGtlcGFub1wiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL3R3aXR0ZXIuY29tL2tlcGFub1wiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gICAgY29uc3QgZGl2ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ2RpdicsIHtcclxuICAgICAgY2xzOiAnbWluaW1hbC1kb25hdGlvbicsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XHJcbiAgICBkaXYuYXBwZW5kQ2hpbGQoXHJcbiAgICAgIGNyZWF0ZURvbmF0ZUJ1dHRvbihcclxuICAgICAgICAnaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9rZXBhbm8nLFxyXG4gICAgICAgIHBhcnNlci5wYXJzZUZyb21TdHJpbmcoYnV5TWVBQ29mZmVlLCAndGV4dC94bWwnKS5kb2N1bWVudEVsZW1lbnQsXHJcbiAgICAgICksXHJcbiAgICApO1xyXG5cclxuXHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBjcmVhdGVEb25hdGVCdXR0b24gPSAobGluazogc3RyaW5nLCBpbWc6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgPT4ge1xyXG4gIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgYS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBsaW5rKTtcclxuICBhLmFkZENsYXNzKCdtaW5pbWFsLWRvbmF0ZS1idXR0b24nKTtcclxuICBhLmFwcGVuZENoaWxkKGltZyk7XHJcbiAgcmV0dXJuIGE7XHJcbn07XHJcblxyXG5jb25zdCBidXlNZUFDb2ZmZWUgPSBgXHJcbjxzdmcgd2lkdGg9XCIxNTBcIiBoZWlnaHQ9XCI0MlwiIHZpZXdCb3g9XCIwIDAgMjYwIDczXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6MTBweFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG48cGF0aCBkPVwiTTAgMTEuNjhDMCA1LjIyOTMyIDUuMjI5MzEgMCAxMS42OCAwSDI0OC4yQzI1NC42NTEgMCAyNTkuODggNS4yMjkzMSAyNTkuODggMTEuNjhWNjEuMzJDMjU5Ljg4IDY3Ljc3MDcgMjU0LjY1MSA3MyAyNDguMiA3M0gxMS42OEM1LjIyOTMxIDczIDAgNjcuNzcwNyAwIDYxLjMyVjExLjY4WlwiIGZpbGw9XCIjRkZERDAwXCIvPlxyXG48cGF0aCBkPVwiTTUyLjI1NjYgMjQuMDA3OEw1Mi4yMjQ2IDIzLjk4ODlMNTIuMTUwNCAyMy45NjYzQzUyLjE4MDIgMjMuOTkxNSA1Mi4yMTc2IDI0LjAwNjEgNTIuMjU2NiAyNC4wMDc4WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTUyLjcyNDggMjcuMzQ1N0w1Mi42ODk1IDI3LjM1NTZMNTIuNzI0OCAyNy4zNDU3WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTUyLjI3MDEgMjQuMDAyNEM1Mi4yNjYgMjQuMDAxOSA1Mi4yNjE5IDI0LjAwMDkgNTIuMjU4IDIzLjk5OTVDNTIuMjU3OCAyNC4wMDIyIDUyLjI1NzggMjQuMDA0OSA1Mi4yNTggMjQuMDA3NkM1Mi4yNjI0IDI0LjAwNyA1Mi4yNjY2IDI0LjAwNTIgNTIuMjcwMSAyNC4wMDI0WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTUyLjI1NzggMjQuMDA5NEg1Mi4yNjQzVjI0LjAwNTRMNTIuMjU3OCAyNC4wMDk0WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTUyLjY5NzMgMjcuMzM5NEw1Mi43NTEzIDI3LjMwODZMNTIuNzcxNCAyNy4yOTczTDUyLjc4OTcgMjcuMjc3OEM1Mi43NTU0IDI3LjI5MjYgNTIuNzI0MSAyNy4zMTM1IDUyLjY5NzMgMjcuMzM5NFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01Mi4zNDg0IDI0LjA4MTJMNTIuMjk1NiAyNC4wMzFMNTIuMjU5OCAyNC4wMTE1QzUyLjI3OSAyNC4wNDU0IDUyLjMxMDggMjQuMDcwNSA1Mi4zNDg0IDI0LjA4MTJaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNMzkuMDY4NCA1Ni40NjlDMzkuMDI2MiA1Ni40ODcyIDM4Ljk4OTMgNTYuNTE1OCAzOC45NjA5IDU2LjU1MkwzOC45OTQzIDU2LjUzMDZDMzkuMDE2OSA1Ni41MDk4IDM5LjA0ODkgNTYuNDg1MyAzOS4wNjg0IDU2LjQ2OVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk00Ni43ODAyIDU0Ljk1MThDNDYuNzgwMiA1NC45MDQxIDQ2Ljc1NjkgNTQuOTEyOSA0Ni43NjI2IDU1LjA4MjZDNDYuNzYyNiA1NS4wNjg3IDQ2Ljc2ODMgNTUuMDU0OSA0Ni43NzA4IDU1LjA0MTdDNDYuNzczOSA1NS4wMTE1IDQ2Ljc3NjQgNTQuOTgyIDQ2Ljc4MDIgNTQuOTUxOFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk00NS45ODQ0IDU2LjQ2OUM0NS45NDIyIDU2LjQ4NzIgNDUuOTA1MyA1Ni41MTU4IDQ1Ljg3NyA1Ni41NTJMNDUuOTEwMyA1Ni41MzA2QzQ1LjkzMjkgNTYuNTA5OCA0NS45NjQ5IDU2LjQ4NTMgNDUuOTg0NCA1Ni40NjlaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNMzMuNjMwNyA1Ni44MzAxQzMzLjU5ODcgNTYuODAyMyAzMy41NTk1IDU2Ljc4NCAzMy41MTc2IDU2Ljc3NzNDMzMuNTUxNSA1Ni43OTM3IDMzLjU4NTUgNTYuODEgMzMuNjA4MSA1Ni44MjI2TDMzLjYzMDcgNTYuODMwMVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk0zMi40MTE4IDU1LjY1OThDMzIuNDA2OCA1NS42MTAzIDMyLjM5MTYgNTUuNTYyNCAzMi4zNjcyIDU1LjUxOUMzMi4zODQ1IDU1LjU2NDIgMzIuMzk5IDU1LjYxMDQgMzIuNDEwNiA1NS42NTczTDMyLjQxMTggNTUuNjU5OFpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk00MC42MjMgMzQuNzIyMUMzOC45NDQ5IDM1LjQ0MDUgMzcuMDQwNCAzNi4yNTUxIDM0LjU3MjIgMzYuMjU1MUMzMy41Mzk3IDM2LjI1MzEgMzIuNTEyMiAzNi4xMTE0IDMxLjUxNzYgMzUuODM0TDMzLjIyNDcgNTMuMzYwNUMzMy4yODUxIDU0LjA5MyAzMy42MTg4IDU0Ljc3NjEgMzQuMTU5NSA1NS4yNzM5QzM0LjcwMDMgNTUuNzcxOCAzNS40MDg1IDU2LjA0ODIgMzYuMTQzNSA1Ni4wNDhDMzYuMTQzNSA1Ni4wNDggMzguNTY0IDU2LjE3MzcgMzkuMzcxNiA1Ni4xNzM3QzQwLjI0MDkgNTYuMTczNyA0Mi44NDc0IDU2LjA0OCA0Mi44NDc0IDU2LjA0OEM0My41ODIzIDU2LjA0OCA0NC4yOTA0IDU1Ljc3MTYgNDQuODMxIDU1LjI3MzdDNDUuMzcxNiA1NC43NzU5IDQ1LjcwNTIgNTQuMDkyOSA0NS43NjU2IDUzLjM2MDVMNDcuNTk0IDMzLjk5M0M0Ni43NzY5IDMzLjcxNCA0NS45NTIzIDMzLjUyODYgNDUuMDIyNyAzMy41Mjg2QzQzLjQxNSAzMy41Mjc5IDQyLjExOTYgMzQuMDgxNyA0MC42MjMgMzQuNzIyMVpcIiBmaWxsPVwid2hpdGVcIi8+XHJcbjxwYXRoIGQ9XCJNMjYuMjM0NCAyNy4yNDQ5TDI2LjI2MzMgMjcuMjcxOUwyNi4yODIxIDI3LjI4MzJDMjYuMjY3NiAyNy4yNjg4IDI2LjI1MTYgMjcuMjU1OSAyNi4yMzQ0IDI3LjI0NDlaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTUuNDkwNiAyNS42Mjc0TDU1LjIzMzYgMjQuMzMwN0M1NS4wMDI5IDIzLjE2NzMgNTQuNDc5MyAyMi4wNjggNTMuMjg1MSAyMS42NDc1QzUyLjkwMjQgMjEuNTEzIDUyLjQ2OCAyMS40NTUyIDUyLjE3NDUgMjEuMTc2OEM1MS44ODEgMjAuODk4MyA1MS43OTQzIDIwLjQ2NTkgNTEuNzI2NCAyMC4wNjQ5QzUxLjYwMDcgMTkuMzI4OSA1MS40ODI1IDE4LjU5MjMgNTEuMzUzNyAxNy44NTc1QzUxLjI0MjQgMTcuMjI1OSA1MS4xNTQ0IDE2LjUxNjMgNTAuODY0NyAxNS45MzY4QzUwLjQ4NzYgMTUuMTU4NiA0OS43MDUgMTQuNzAzNiA0OC45MjY5IDE0LjQwMjVDNDguNTI4MiAxNC4yNTM3IDQ4LjEyMTMgMTQuMTI3OCA0Ny43MDgyIDE0LjAyNTRDNDUuNzY0MiAxMy41MTI1IDQzLjcyMDIgMTMuMzI0IDQxLjcyMDIgMTMuMjE2NUMzOS4zMTk3IDEzLjA4NCAzNi45MTI4IDEzLjEyMzkgMzQuNTE4IDEzLjMzNTlDMzIuNzM1NSAxMy40OTgxIDMwLjg1ODEgMTMuNjk0MiAyOS4xNjQyIDE0LjMxMDhDMjguNTQ1MSAxNC41MzY0IDI3LjkwNzEgMTQuODA3MyAyNy40MzY0IDE1LjI4NTZDMjYuODU4NyAxNS44NzMzIDI2LjY3MDIgMTYuNzgyMSAyNy4wOTE5IDE3LjUxNUMyNy4zOTE3IDE4LjAzNTQgMjcuODk5NiAxOC40MDMxIDI4LjQzODIgMTguNjQ2M0MyOS4xMzk4IDE4Ljk1OTcgMjkuODcyNiAxOS4xOTgyIDMwLjYyNDIgMTkuMzU3OEMzMi43MTcyIDE5LjgyMDQgMzQuODg1IDIwLjAwMjEgMzcuMDIzMyAyMC4wNzk0QzM5LjM5MzIgMjAuMTc1IDQxLjc2NyAyMC4wOTc1IDQ0LjEyNTYgMTkuODQ3NEM0NC43MDg5IDE5Ljc4MzMgNDUuMjkxMSAxOS43MDY0IDQ1Ljg3MjMgMTkuNjE2OEM0Ni41NTY4IDE5LjUxMTggNDYuOTk2MSAxOC42MTY4IDQ2Ljc5NDMgMTcuOTkzM0M0Ni41NTMgMTcuMjQ3OSA0NS45MDQ0IDE2Ljk1ODcgNDUuMTcwOSAxNy4wNzEyQzQ1LjA2MjggMTcuMDg4MiA0NC45NTUzIDE3LjEwMzkgNDQuODQ3MiAxNy4xMTk2TDQ0Ljc2OTIgMTcuMTMxQzQ0LjUyMDggMTcuMTYyNCA0NC4yNzIzIDE3LjE5MTcgNDQuMDIzOCAxNy4yMTlDNDMuNTEwNSAxNy4yNzQzIDQyLjk5NTkgMTcuMzE5NSA0Mi40ODAxIDE3LjM1NDdDNDEuMzI0OSAxNy40MzUyIDQwLjE2NjUgMTcuNDcyMiAzOS4wMDg4IDE3LjQ3NDFDMzcuODcxMiAxNy40NzQxIDM2LjczMjkgMTcuNDQyMSAzNS41OTc4IDE3LjM2NzNDMzUuMDc5OSAxNy4zMzMzIDM0LjU2MzIgMTcuMjkwMiAzNC4wNDc4IDE3LjIzNzhDMzMuODEzNCAxNy4yMTMzIDMzLjU3OTYgMTcuMTg3NSAzMy4zNDU4IDE3LjE1ODZMMzMuMTIzMyAxNy4xMzAzTDMzLjA3NDkgMTcuMTIzNEwzMi44NDQyIDE3LjA5MDFDMzIuMzcyOCAxNy4wMTkxIDMxLjkwMTQgMTYuOTM3NCAzMS40MzUgMTYuODM4N0MzMS4zODggMTYuODI4MyAzMS4zNDU5IDE2LjgwMjEgMzEuMzE1NyAxNi43NjQ1QzMxLjI4NTYgMTYuNzI2OSAzMS4yNjkxIDE2LjY4MDEgMzEuMjY5MSAxNi42MzE5QzMxLjI2OTEgMTYuNTgzNyAzMS4yODU2IDE2LjUzNjkgMzEuMzE1NyAxNi40OTkzQzMxLjM0NTkgMTYuNDYxNyAzMS4zODggMTYuNDM1NiAzMS40MzUgMTYuNDI1MUgzMS40NDM4QzMxLjg0OCAxNi4zMzkgMzIuMjU1MyAxNi4yNjU1IDMyLjY2MzggMTYuMjAxNEMzMi44IDE2LjE4IDMyLjkzNjYgMTYuMTU5IDMzLjA3MzYgMTYuMTM4NUgzMy4wNzc0QzMzLjMzMzIgMTYuMTIxNSAzMy41OTAzIDE2LjA3NTcgMzMuODQ0OCAxNi4wNDU1QzM2LjA1OTUgMTUuODE1MSAzOC4yODc0IDE1LjczNjYgNDAuNTEyOCAxNS44MTA0QzQxLjU5MzMgMTUuODQxOSA0Mi42NzMxIDE1LjkwNTMgNDMuNzQ4NSAxNi4wMTQ3QzQzLjk3OTggMTYuMDM4NiA0NC4yMDk4IDE2LjA2MzcgNDQuNDM5OSAxNi4wOTJDNDQuNTI3OSAxNi4xMDI3IDQ0LjYxNjUgMTYuMTE1MyA0NC43MDUxIDE2LjEyNTlMNDQuODgzNiAxNi4xNTE3QzQ1LjQwNCAxNi4yMjkyIDQ1LjkyMTcgMTYuMzIzMyA0Ni40MzY3IDE2LjQzMzlDNDcuMTk5NyAxNi41OTk5IDQ4LjE3OTYgMTYuNjUzOSA0OC41MTkgMTcuNDg5OEM0OC42MjcxIDE3Ljc1NTEgNDguNjc2MSAxOC4wNDk5IDQ4LjczNTkgMTguMzI4M0w0OC44MTE5IDE4LjY4MzRDNDguODEzOSAxOC42ODk4IDQ4LjgxNTQgMTguNjk2MyA0OC44MTYzIDE4LjcwMjlDNDguOTk2MSAxOS41NDA5IDQ5LjE3NiAyMC4zNzkgNDkuMzU2MiAyMS4yMTdDNDkuMzY5NCAyMS4yNzg5IDQ5LjM2OTcgMjEuMzQyOSA0OS4zNTcxIDIxLjQwNDlDNDkuMzQ0NSAyMS40NjY5IDQ5LjMxOTMgMjEuNTI1NyA0OS4yODI5IDIxLjU3NzZDNDkuMjQ2NiAyMS42Mjk0IDQ5LjIgMjEuNjczMiA0OS4xNDYgMjEuNzA2MkM0OS4wOTIgMjEuNzM5MiA0OS4wMzE3IDIxLjc2MDggNDguOTY5IDIxLjc2OTVINDguOTY0TDQ4Ljg1NCAyMS43ODQ2TDQ4Ljc0NTMgMjEuNzk5QzQ4LjQwMDkgMjEuODQzOSA0OC4wNTYgMjEuODg1OCA0Ny43MTA3IDIxLjkyNDdDNDcuMDMwNyAyMi4wMDIyIDQ2LjM0OTYgMjIuMDY5MyA0NS42Njc0IDIyLjEyNTlDNDQuMzExOSAyMi4yMzg2IDQyLjk1MzYgMjIuMzEyNSA0MS41OTI3IDIyLjM0NzdDNDAuODk5MiAyMi4zNjYyIDQwLjIwNTkgMjIuMzc0OCAzOS41MTI5IDIyLjM3MzVDMzYuNzU0MyAyMi4zNzEzIDMzLjk5ODEgMjIuMjExIDMxLjI1NzggMjEuODkzM0MzMC45NjExIDIxLjg1ODEgMzAuNjY0NSAyMS44MjA0IDMwLjM2NzggMjEuNzgyMUMzMC41OTc4IDIxLjgxMTYgMzAuMjAwNiAyMS43NTk0IDMwLjEyMDIgMjEuNzQ4MUMyOS45MzE2IDIxLjcyMTcgMjkuNzQzMSAyMS42OTQzIDI5LjU1NDUgMjEuNjY1OEMyOC45MjE2IDIxLjU3MDkgMjguMjkyNCAyMS40NTQgMjcuNjYwNyAyMS4zNTE1QzI2Ljg5NzEgMjEuMjI1OCAyNi4xNjY3IDIxLjI4ODcgMjUuNDc2IDIxLjY2NThDMjQuOTA5IDIxLjk3NiAyNC40NTAxIDIyLjQ1MTggMjQuMTYwNSAyMy4wMjk3QzIzLjg2MjYgMjMuNjQ1NiAyMy43NzM5IDI0LjMxNjMgMjMuNjQwNyAyNC45NzgxQzIzLjUwNzQgMjUuNjM5OSAyMy4zIDI2LjM1MjEgMjMuMzc4NiAyNy4wMzE1QzIzLjU0NzcgMjguNDk3OSAyNC41NzI4IDI5LjY4OTUgMjYuMDQ3MyAyOS45NTZDMjcuNDM0NSAzMC4yMDc0IDI4LjgyOTIgMzAuNDExMSAzMC4yMjc2IDMwLjU4NDZDMzUuNzIxMiAzMS4yNTc0IDQxLjI3MTEgMzEuMzM3OSA0Ni43ODE4IDMwLjgyNDdDNDcuMjMwNSAzMC43ODI4IDQ3LjY3ODcgMzAuNzM3MSA0OC4xMjYyIDMwLjY4NzZDNDguMjY2IDMwLjY3MjMgNDguNDA3NCAzMC42ODg0IDQ4LjU0MDEgMzAuNzM0OEM0OC42NzI5IDMwLjc4MTIgNDguNzkzNiAzMC44NTY2IDQ4Ljg5MzQgMzAuOTU1N0M0OC45OTMyIDMxLjA1NDggNDkuMDY5NSAzMS4xNzQ5IDQ5LjExNjkgMzEuMzA3M0M0OS4xNjQyIDMxLjQzOTcgNDkuMTgxNCAzMS41ODExIDQ5LjE2NyAzMS43MjA5TDQ5LjAyNzUgMzMuMDc3M0M0OC43NDYzIDM1LjgxODEgNDguNDY1MiAzOC41NTg3IDQ4LjE4NCA0MS4yOTlDNDcuODkwNyA0NC4xNzY5IDQ3LjU5NTUgNDcuMDU0NSA0Ny4yOTg0IDQ5LjkzMTlDNDcuMjE0NiA1MC43NDIyIDQ3LjEzMDggNTEuNTUyNCA0Ny4wNDcgNTIuMzYyNEM0Ni45NjY2IDUzLjE2IDQ2Ljk1NTIgNTMuOTgyNyA0Ni44MDM4IDU0Ljc3MDlDNDYuNTY0OSA1Ni4wMTAzIDQ1LjcyNTggNTYuNzcxNSA0NC41MDE1IDU3LjA0OTlDNDMuMzc5OCA1Ny4zMDUyIDQyLjIzMzkgNTcuNDM5MiA0MS4wODM2IDU3LjQ0OTdDMzkuODA4MyA1Ny40NTY2IDM4LjUzMzYgNTcuNCAzNy4yNTgzIDU3LjQwNjlDMzUuODk3IDU3LjQxNDUgMzQuMjI5NSA1Ny4yODg3IDMzLjE3ODYgNTYuMjc1NkMzMi4yNTUzIDU1LjM4NTYgMzIuMTI3NyA1My45OTIxIDMyLjAwMiA1Mi43ODcyQzMxLjgzNDQgNTEuMTkyIDMxLjY2ODIgNDkuNTk3MSAzMS41MDM2IDQ4LjAwMjNMMzAuNTc5NiAzOS4xMzQ0TDI5Ljk4MTkgMzMuMzk2NkMyOS45NzE4IDMzLjMwMTcgMjkuOTYxOCAzMy4yMDggMjkuOTUyNCAzMy4xMTI1QzI5Ljg4MDcgMzIuNDI4IDI5LjM5NjEgMzEuNzU4IDI4LjYzMjQgMzEuNzkyNkMyNy45Nzg4IDMxLjgyMTUgMjcuMjM1OSAzMi4zNzcxIDI3LjMxMjUgMzMuMTEyNUwyNy43NTU3IDM3LjM2NjRMMjguNjcyIDQ2LjE2NTdDMjguOTMzMSA0OC42NjUyIDI5LjE5MzUgNTEuMTY1IDI5LjQ1MzMgNTMuNjY1M0MyOS41MDM2IDU0LjE0NDIgMjkuNTUwNyA1NC42MjQ0IDI5LjYwMzUgNTUuMTAzNEMyOS44OTA4IDU3LjcyMDUgMzEuODg5NSA1OS4xMzEgMzQuMzY0NiA1OS41MjgyQzM1LjgxMDIgNTkuNzYwNyAzNy4yOTEgNTkuODA4NSAzOC43NTggNTkuODMyNEM0MC42Mzg2IDU5Ljg2MjYgNDIuNTM4IDU5LjkzNDggNDQuMzg3NyA1OS41OTQyQzQ3LjEyODcgNTkuMDkxNCA0OS4xODUzIDU3LjI2MTEgNDkuNDc4OCA1NC40MjJDNDkuNTYyNiA1My42MDI0IDQ5LjY0NjQgNTIuNzgyNiA0OS43MzAyIDUxLjk2MjZDNTAuMDA4OCA0OS4yNTA3IDUwLjI4NzEgNDYuNTM4NiA1MC41NjQ5IDQzLjgyNjNMNTEuNDczNyAzNC45NjQxTDUxLjg5MDQgMzAuOTAyNkM1MS45MTEyIDMwLjcwMTIgNTEuOTk2MiAzMC41MTE4IDUyLjEzMyAzMC4zNjI1QzUyLjI2OTcgMzAuMjEzMiA1Mi40NTA5IDMwLjExMTkgNTIuNjQ5NyAzMC4wNzM2QzUzLjQzMzUgMjkuOTIwOCA1NC4xODI3IDI5LjY2IDU0Ljc0MDIgMjkuMDYzNUM1NS42Mjc3IDI4LjExMzggNTUuODA0MyAyNi44NzU2IDU1LjQ5MDYgMjUuNjI3NFpNMjYuMDA3MSAyNi41MDM1QzI2LjAxOSAyNi40OTc5IDI1Ljk5NyAyNi42MDAzIDI1Ljk4NzYgMjYuNjQ4MUMyNS45ODU3IDI2LjU3NTggMjUuOTg5NSAyNi41MTE3IDI2LjAwNzEgMjYuNTAzNVpNMjYuMDgzMSAyNy4wOTE4QzI2LjA4OTQgMjcuMDg3NCAyNi4xMDgzIDI3LjExMjYgMjYuMTI3OCAyNy4xNDI4QzI2LjA5ODIgMjcuMTE1MSAyNi4wNzk0IDI3LjA5NDQgMjYuMDgyNSAyNy4wOTE4SDI2LjA4MzFaTTI2LjE1NzkgMjcuMTkwNUMyNi4xODUgMjcuMjM2NCAyNi4xOTk0IDI3LjI2NTMgMjYuMTU3OSAyNy4xOTA1VjI3LjE5MDVaTTI2LjMwODIgMjcuMzEyNUgyNi4zMTE5QzI2LjMxMTkgMjcuMzE2OSAyNi4zMTg4IDI3LjMyMTMgMjYuMzIxNCAyNy4zMjU3QzI2LjMxNzIgMjcuMzIwOCAyNi4zMTI2IDI3LjMxNjQgMjYuMzA3NSAyNy4zMTI1SDI2LjMwODJaTTUyLjYxMzIgMjcuMTMwMkM1Mi4zMzE3IDI3LjM5NzkgNTEuOTA3NCAyNy41MjI0IDUxLjQ4ODIgMjcuNTg0NkM0Ni43ODY4IDI4LjI4MjMgNDIuMDE2OSAyOC42MzU1IDM3LjI2NCAyOC40Nzk2QzMzLjg2MjQgMjguMzYzMyAzMC40OTY3IDI3Ljk4NTYgMjcuMTI5IDI3LjUwOThDMjYuNzk5IDI3LjQ2MzMgMjYuNDQxNCAyNy40MDMgMjYuMjE0NSAyNy4xNTk3QzI1Ljc4NzEgMjYuNzAwOSAyNS45OTcgMjUuNzc3IDI2LjEwODMgMjUuMjIyNkMyNi4yMTAxIDI0LjcxNDggMjYuNDA1IDI0LjAzNzggMjcuMDA5IDIzLjk2NTZDMjcuOTUxOCAyMy44NTQ5IDI5LjA0NjYgMjQuMjUyOCAyOS45Nzk0IDI0LjM5NDJDMzEuMTAyMyAyNC41NjU2IDMyLjIyOTUgMjQuNzAyOCAzMy4zNjA5IDI0LjgwNTlDMzguMTg5MiAyNS4yNDU5IDQzLjA5ODYgMjUuMTc3NCA0Ny45MDU2IDI0LjUzMzdDNDguNzgxNyAyNC40MTYgNDkuNjU0OCAyNC4yNzkyIDUwLjUyNDYgMjQuMTIzM0M1MS4yOTk2IDIzLjk4NDQgNTIuMTU4OCAyMy43MjM2IDUyLjYyNzEgMjQuNTI2MkM1Mi45NDgyIDI1LjA3MyA1Mi45OTEgMjUuODA0NiA1Mi45NDEzIDI2LjQyMjVDNTIuOTI2IDI2LjY5MTcgNTIuODA4NCAyNi45NDQ4IDUyLjYxMjYgMjcuMTMwMkg1Mi42MTMyWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNODEuMTMwMiA0MC4xOTI5QzgwLjg1NTYgNDAuNzE2OSA4MC40NzgxIDQxLjE3MzIgNzkuOTk3OCA0MS41NjA0Qzc5LjUxNzUgNDEuOTQ3OSA3OC45NTcxIDQyLjI2MzMgNzguMzE2NiA0Mi41MDYyQzc3LjY3NjEgNDIuNzQ5NyA3Ny4wMzE1IDQyLjkxMzEgNzYuMzgzNSA0Mi45OTY0Qzc1LjczNTIgNDMuMDc5OSA3NS4xMDYgNDMuMDcyNyA3NC40OTYzIDQyLjk3MzVDNzMuODg2MyA0Mi44NzQ5IDczLjM2NzQgNDIuNjczNyA3Mi45NDA4IDQyLjM2OTVMNzMuNDIxNCAzNy4zNzc5QzczLjg2MzMgMzcuMjI2MSA3NC40MTk3IDM3LjA3MDMgNzUuMDkwOSAzNi45MTA3Qzc1Ljc2MTkgMzYuNzUxMyA3Ni40NTIgMzYuNjM3MSA3Ny4xNjEzIDM2LjU2ODlDNzcuODcwNSAzNi41MDAzIDc4LjU0MTIgMzYuNTA4NCA3OS4xNzQ0IDM2LjU5MTdDNzkuODA2OCAzNi42NzUzIDgwLjMwNjUgMzYuODc2NSA4MC42NzI1IDM3LjE5NThDODAuODcwNyAzNy4zNzggODEuMDM4NyAzNy41NzU0IDgxLjE3NiAzNy43ODgzQzgxLjMxMyAzOC4wMDExIDgxLjM5NjkgMzguMjIxNCA4MS40Mjc2IDM4LjQ0OTNDODEuNTAzNyAzOS4wODc1IDgxLjQwNDcgMzkuNjY4NyA4MS4xMzAyIDQwLjE5MjlaTTc0LjE1MyAyOS41NjAyQzc0LjQ3MzQgMjkuMzYyNyA3NC44NTg1IDI5LjE4NzcgNzUuMzA4MyAyOS4wMzU2Qzc1Ljc1ODEgMjguODg0MSA3Ni4yMTk1IDI4Ljc3NzQgNzYuNjkyMyAyOC43MTY3Qzc3LjE2NDggMjguNjU2MiA3Ny42MjYyIDI4LjY0ODEgNzguMDc2MyAyOC42OTM4Qzc4LjUyNTggMjguNzM5NSA3OC45MjI4IDI4Ljg2NDcgNzkuMjY1OSAyOS4wNjk3Qzc5LjYwODkgMjkuMjc1MSA3OS44NjQzIDI5LjU3MTQgODAuMDMyIDI5Ljk1ODZDODAuMTk5NyAzMC4zNDY0IDgwLjI0NTYgMzAuODM2NSA4MC4xNjkzIDMxLjQyOUM4MC4xMDgzIDMxLjkwMDEgNzkuOTIxMSAzMi4yOTkxIDc5LjYwODkgMzIuNjI1NkM3OS4yOTYzIDMyLjk1MjYgNzguOTE0NyAzMy4yMjU5IDc4LjQ2NTIgMzMuNDQ2MkM3OC4wMTU0IDMzLjY2NjggNzcuNTM4OCAzMy44NDE1IDc3LjAzNTYgMzMuOTcwMkM3Ni41MzIxIDM0LjA5OTcgNzYuMDQ3NyAzNC4xOTQ5IDc1LjU4MjggMzQuMjU1M0M3NS4xMTc2IDM0LjMxNjMgNzQuNzEzNyAzNC4zNTQ1IDc0LjM3MDYgMzQuMzY5MkM3NC4wMjczIDM0LjM4NDUgNzMuODAyMSAzNC4zOTIxIDczLjY5NTYgMzQuMzkyMUw3NC4xNTMgMjkuNTYwMlpNODMuNjAwNyAzNi45Njc2QzgzLjM1NjYgMzYuNDM2MSA4My4wMjg3IDM1Ljk2ODkgODIuNjE3MiAzNS41NjU4QzgyLjIwNTQgMzUuMTYzMyA4MS43MTcgMzQuODcwOSA4MS4xNTMxIDM0LjY4ODVDODEuMzk2OSAzNC40OTEgODEuNjM3MSAzNC4xNzk1IDgxLjg3MzcgMzMuNzUzOUM4Mi4xMDk5IDMzLjMyODggODIuMzExOSAzMi44NjUgODIuNDc5NiAzMi4zNjM2QzgyLjY0NzQgMzEuODYxOSA4Mi43NjIgMzEuMzU3IDgyLjgyMjkgMzAuODQ3OEM4Mi44ODM2IDMwLjMzODkgODIuODYwNyAyOS45MDIgODIuNzU0NCAyOS41MzdDODIuNDk0NyAyOC42MjU2IDgyLjA4NyAyNy45MTE0IDgxLjUzMDMgMjcuMzk0NkM4MC45NzM0IDI2Ljg3ODIgODAuMzI1NyAyNi41MjExIDc5LjU4NiAyNi4zMjMzQzc4Ljg0NjIgMjYuMTI2NCA3OC4wMzA0IDI2LjA4NDIgNzcuMTM4MyAyNi4xOTgxQzc2LjI0NjIgMjYuMzEyIDc1LjMzNDcgMjYuNTM2MSA3NC40MDQ5IDI2Ljg3MDRDNzQuNDA0OSAyNi43OTQ2IDc0LjQxMjQgMjYuNzE0OCA3NC40Mjc4IDI2LjYzMTJDNzQuNDQyNiAyNi41NDggNzQuNDUwNCAyNi40NjA0IDc0LjQ1MDQgMjYuMzY5Qzc0LjQ1MDQgMjYuMTQxMSA3NC4zMzYxIDI1Ljk0MzkgNzQuMTA3NCAyNS43NzY1QzczLjg3ODcgMjUuNjA5MyA3My42MTU1IDI1LjUxMDcgNzMuMzE4MyAyNS40ODAxQzczLjAyMDkgMjUuNDUgNzIuNzMxIDI1LjUxNDIgNzIuNDQ4OSAyNS42NzM4QzcyLjE2NjUgMjUuODMzNCA3MS45NzIxIDI2LjEyNjQgNzEuODY1NiAyNi41NTExQzcxLjc0MzQgMjcuOTE4OSA3MS42MjE1IDI5LjMzOTggNzEuNDk5NiAzMC44MTM0QzcxLjM3NzQgMzIuMjg3NSA3MS4yNDggMzMuNzc2NyA3MS4xMTA3IDM1LjI4MTJDNzAuOTczNSAzNi43ODU1IDcwLjgzNjIgMzguMjc4NCA3MC42OTg5IDM5Ljc1OThDNzAuNTYxNiA0MS4yNDE0IDcwLjQyNDQgNDIuNjY1OSA3MC4yODcxIDQ0LjAzMzNDNzAuMzMzIDQ0LjQ0MzYgNzAuNDQ3MyA0NC43NjI5IDcwLjYzMDQgNDQuOTkwN0M3MC44MTMzIDQ1LjIxODkgNzEuMDI2OCA0NS4zNTU2IDcxLjI3MDkgNDUuNDAxQzcxLjUxNDcgNDUuNDQ2NyA3MS43NzA0IDQ1LjQwNDUgNzIuMDM3MSA0NS4yNzU1QzcyLjMwMzggNDUuMTQ2OSA3Mi41MzY1IDQ0LjkyMjIgNzIuNzM1IDQ0LjYwMzJDNzMuMzQ0NyA0NC45Mzc1IDc0LjAzMTEgNDUuMTU0MSA3NC43OTM4IDQ1LjI1M0M3NS41NTYxIDQ1LjM1MTYgNzYuMzI5OCA0NS4zNTE2IDc3LjExNTcgNDUuMjUzQzc3LjkwMDcgNDUuMTU0MSA3OC42NzQ3IDQ0Ljk2ODIgNzkuNDM3NCA0NC42OTQzQzgwLjE5OTcgNDQuNDIxMSA4MC44OTM2IDQ0LjA3OSA4MS41MTkgNDMuNjY5QzgyLjE0NDEgNDMuMjU4NiA4Mi42NzAzIDQyLjc5MTEgODMuMDk3NSA0Mi4yNjcxQzgzLjUyNDQgNDEuNzQyNiA4My44MDY1IDQxLjE3NjcgODMuOTQzNyA0MC41NjkxQzg0LjA4MSAzOS45NDYgODQuMTE5IDM5LjMyMzEgODQuMDU4MSAzOC43QzgzLjk5NzEgMzguMDc3MSA4My44NDQ1IDM3LjUgODMuNjAwNyAzNi45Njc2WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxyXG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTA1LjkxNSA0OS4wMDE3QzEwNS44MzIgNDkuNTAzMSAxMDUuNzEzIDUwLjAzMTEgMTA1LjU2MSA1MC41ODZDMTA1LjQwOCA1MS4xNDAzIDEwNS4yMjkgNTEuNjQ1OCAxMDUuMDIzIDUyLjEwMThDMTA0LjgxOCA1Mi41NTc1IDEwNC41ODkgNTIuOTI1NiAxMDQuMzM3IDUzLjIwN0MxMDQuMDg1IDUzLjQ4OCAxMDMuODE1IDUzLjYwNiAxMDMuNTI1IDUzLjU2MDZDMTAzLjI5NiA1My41Mjk3IDEwMy4xNTEgNTMuMzg1NCAxMDMuMDkxIDUzLjEyNzRDMTAzLjAyOSA1Mi44Njg2IDEwMy4wMjkgNTIuNTQ5NyAxMDMuMDkxIDUyLjE3QzEwMy4xNTEgNTEuNzkwMSAxMDMuMjY5IDUxLjM2MDcgMTAzLjQ0NSA1MC44ODIxQzEwMy42MiA1MC40MDM1IDEwMy44MzQgNDkuOTI4NCAxMDQuMDg1IDQ5LjQ1NzdDMTA0LjMzNyA0OC45ODY0IDEwNC42MjMgNDguNTM0NyAxMDQuOTQzIDQ4LjEwMTVDMTA1LjI2NCA0Ny42Njg2IDEwNS41OTkgNDcuMzA3NSAxMDUuOTUgNDcuMDE4OUMxMDYuMDI2IDQ3LjExIDEwNi4wNiA0Ny4zMzc4IDEwNi4wNTMgNDcuNzAyOEMxMDYuMDQ1IDQ4LjA2NzQgMTA1Ljk5OSA0OC41MDA2IDEwNS45MTUgNDkuMDAxN1pNMTEzLjY3IDM5LjEwOTdDMTEzLjQ2NCAzOC44ODE5IDExMy4yMTMgMzguNzUyOSAxMTIuOTE1IDM4LjcyMjNDMTEyLjYxOCAzOC42OTE5IDExMi4zMTcgMzguODU5IDExMi4wMTIgMzkuMjIzN0MxMTEuODEzIDM5LjU4ODMgMTExLjU2MiAzOS45Mzc5IDExMS4yNTcgNDAuMjcyMkMxMTAuOTUyIDQwLjYwNjcgMTEwLjYzNSA0MC45MTAzIDExMC4zMDcgNDEuMTgzOUMxMDkuOTggNDEuNDU3MiAxMDkuNjY3IDQxLjY5MzEgMTA5LjM3IDQxLjg5MDNDMTA5LjA3MiA0Mi4wODgxIDEwOC44NCA0Mi4yMzI0IDEwOC42NzIgNDIuMzIzNUMxMDguNjExIDQxLjgzNzQgMTA4LjU3NiA0MS4zMTMyIDEwOC41NjkgNDAuNzUwN0MxMDguNTYxIDQwLjE4ODYgMTA4LjU3MyAzOS42MTkgMTA4LjYwMyAzOS4wNDE1QzEwOC42NDkgMzguMjIwOSAxMDguNzQ0IDM3LjM5MyAxMDguODg5IDM2LjU1N0MxMDkuMDM0IDM1LjcyMTMgMTA5LjI0NCAzNC45MDA3IDEwOS41MTggMzQuMDk1MUMxMDkuNTE4IDMzLjY3IDEwOS40MTkgMzMuMzI0MiAxMDkuMjIxIDMzLjA1ODJDMTA5LjAyMiAzMi43OTI0IDEwOC43ODIgMzIuNjI1IDEwOC41IDMyLjU1NjdDMTA4LjIxOCAzMi40ODg1IDEwNy45MjkgMzIuNTI2NCAxMDcuNjMxIDMyLjY3MDdDMTA3LjMzNCAzMi44MTUzIDEwNy4wNzggMzMuMDc3NSAxMDYuODY1IDMzLjQ1NjlDMTA2LjY4MiAzMy45NTg2IDEwNi40NzIgMzQuNTIwNyAxMDYuMjM2IDM1LjE0MzZDMTA1Ljk5OSAzNS43NjY3IDEwNS43MzIgMzYuNDAxMiAxMDUuNDM1IDM3LjA0NjlDMTA1LjEzOCAzNy42OTMxIDEwNC44MDYgMzguMzE5NyAxMDQuNDQgMzguOTI3M0MxMDQuMDc0IDM5LjUzNTQgMTAzLjY3NCA0MC4wNzUgMTAzLjIzOSA0MC41NDU3QzEwMi44MDQgNDEuMDE2OCAxMDIuMzMxIDQxLjM4NTQgMTAxLjgyMSA0MS42NTEyQzEwMS4zMSA0MS45MTcyIDEwMC43NTcgNDIuMDM0OSAxMDAuMTYyIDQyLjAwNDVDOTkuODg3NiA0MS45Mjg1IDk5LjY4OTMgNDEuNzIzNSA5OS41Njc1IDQxLjM4ODlDOTkuNDQ1MyA0MS4wNTQ5IDk5LjM3MyA0MC42MzY4IDk5LjM1MDQgNDAuMTM1NEM5OS4zMjc1IDM5LjYzNCA5OS4zNTA0IDM5LjA4MzEgOTkuNDE4OSAzOC40ODI4Qzk5LjQ4NzcgMzcuODgyOCA5OS41NzkxIDM3LjI4NjMgOTkuNjkzNCAzNi42OTM4Qzk5LjgwNzggMzYuMTAxIDk5LjkzMzcgMzUuNTM4OSAxMDAuMDcxIDM1LjAwNzFDMTAwLjIwOCAzNC40NzUzIDEwMC4zMzcgMzQuMDI2OCAxMDAuNDYgMzMuNjYyMkMxMDAuNjQzIDMzLjIyMTggMTAwLjY0MyAzMi44NTI5IDEwMC40NiAzMi41NTY3QzEwMC4yNzcgMzIuMjYwNCAxMDAuMDI1IDMyLjA2MzEgOTkuNzA1IDMxLjk2NEM5OS4zODQ2IDMxLjg2NTQgOTkuMDQ4OSAzMS44Njk0IDk4LjY5ODMgMzEuOTc1NUM5OC4zNDc0IDMyLjA4MTkgOTguMDk1OCAzMi4zMTczIDk3Ljk0MzUgMzIuNjgyQzk3LjY4NCAzMy4zMDU0IDk3LjQ0NzUgMzQuMDA0IDk3LjIzNDIgMzQuNzc5Qzk3LjAyMDYgMzUuNTUzOSA5Ni44NDkxIDM2LjM1NTggOTYuNzE5NyAzNy4xODM2Qzk2LjU4OTYgMzguMDEyMSA5Ni41MTcxIDM4LjgzMjcgOTYuNTAyIDM5LjY0NTZDOTYuNTAxMSAzOS42OTg1IDk2LjUwMzcgMzkuNzQ4OCA5Ni41MDM0IDM5LjgwMTRDOTYuMTcwOSA0MC42ODQ4IDk1Ljg1NCA0MS4zNTI1IDk1LjU1MyA0MS43OTkyQzk1LjE2NDEgNDIuMzc3IDk0LjcyNTMgNDIuNjI3NyA5NC4yMzc1IDQyLjU1MTNDOTQuMDIzNiA0Mi40NjAzIDkzLjg4MzIgNDIuMjQ3NyA5My44MTQ3IDQxLjkxMzJDOTMuNzQ1MyA0MS41NzkyIDkzLjcyMjcgNDEuMTY4OSA5My43NDUzIDQwLjY4MjJDOTMuNzY4OCA0MC4xOTY0IDkzLjgyNiAzOS42NDU2IDkzLjkxNzEgMzkuMDI5OUM5NC4wMDkxIDM4LjQxNDYgOTQuMTIyOSAzNy43NzY0IDk0LjI2MDEgMzcuMTE1NEM5NC4zOTc3IDM2LjQ1NDEgOTQuNTQyNSAzNS43ODk5IDk0LjY5NDkgMzUuMTIxQzk0Ljg0NzIgMzQuNDUyNSA5NC45ODQ1IDMzLjgyMTggOTUuMTA3IDMzLjIyOTFDOTUuMDkxNiAzMi42OTczIDk0LjkzNTIgMzIuMjkxIDk0LjYzNzcgMzIuMDA5N0M5NC4zNDA1IDMxLjcyODkgOTMuOTI0NyAzMS42MTg3IDkzLjM5MTMgMzEuNjc5MUM5My4wMjUzIDMxLjgzMTIgOTIuNzU0MiAzMi4wMjkgOTIuNTc5IDMyLjI3MTlDOTIuNDAzNCAzMi41MTQ4IDkyLjI2MjMgMzIuODI2NSA5Mi4xNTU4IDMzLjIwNjJDOTIuMDk0NiAzMy40MDQgOTIuMDAzMiAzMy43OTkgOTEuODgxMyAzNC4zOTE4QzkxLjc1OTEgMzQuOTg0IDkxLjYwMyAzNS42NjQ0IDkxLjQxMjMgMzYuNDMxNUM5MS4yMjE3IDM3LjE5OTIgOTAuOTk2NyAzOC4wMDA1IDkwLjczNzYgMzguODM2MkM5MC40NzgxIDM5LjY3MTkgOTAuMTg4NSA0MC40MjgzIDg5Ljg2ODQgNDEuMTA0MUM4OS41NDggNDEuNzgwMSA4OS4xOTcyIDQyLjMyMzUgODguODE2MSA0Mi43MzM4Qzg4LjQzNDggNDMuMTQzOCA4OC4wMjMgNDMuMzExMyA4Ny41ODA3IDQzLjIzNTJDODcuMzM2NiA0My4xODk1IDg3LjE4MDUgNDIuOTM4OCA4Ny4xMTIgNDIuNDgzMUM4Ny4wNDMyIDQyLjAyNzEgODcuMDMxOSA0MS40NjUzIDg3LjA3NzUgNDAuNzk2NEM4Ny4xMjMzIDQwLjEyNzkgODcuMjE0OCAzOS4zOTQ2IDg3LjM1MiAzOC41OTcxQzg3LjQ4OTMgMzcuNzk5MyA4Ny42MyAzNy4wNDM0IDg3Ljc3NTIgMzYuMzI4OUM4Ny45MiAzNS42MTQ5IDg4LjA1MzUgMzQuOTg0IDg4LjE3NTYgMzQuNDM3MkM4OC4yOTc1IDMzLjg5MDEgODguMzgxNCAzMy41MjU0IDg4LjQyNzIgMzMuMzQzM0M4OC40MjcyIDMyLjkwMjYgODguMzI3NyAzMi41NDk1IDg4LjEyOTggMzIuMjgzMkM4Ny45MzEzIDMyLjAxNzggODcuNjkxMyAzMS44NTAzIDg3LjQwOTIgMzEuNzgxOEM4Ny4xMjY4IDMxLjcxMzYgODYuODM3MiAzMS43NTE0IDg2LjU0IDMxLjg5NTdDODYuMjQyNiAzMi4wNDAzIDg1Ljk4NzIgMzIuMzAyNiA4NS43NzM2IDMyLjY4MkM4NS42OTczIDMzLjA5MjMgODUuNTk4IDMzLjU2NzQgODUuNDc2MSAzNC4xMDY3Qzg1LjM1MzkgMzQuNjQ1OSA4NS4yMzYxIDM1LjIwMDYgODUuMTIxOCAzNS43NzA1Qzg1LjAwNzQgMzYuMzQwNCA4NC45MDAzIDM2Ljg5ODggODQuODAxNCAzNy40NDU5Qzg0LjcwMjEgMzcuOTkzIDg0LjYyOTkgMzguNDcxNiA4NC41ODQgMzguODgxOUM4NC41NTM2IDM5LjIwMDggODQuNTE5IDM5LjU5MjMgODQuNDgxMyA0MC4wNTU2Qzg0LjQ0MyA0MC41MTk0IDg0LjQyMzggNDEuMDA5MiA4NC40MjM4IDQxLjUyNTdDODQuNDIzOCA0Mi4wNDI3IDg0LjQ2MTggNDIuNTU1NCA4NC41Mzg1IDQzLjA2NDNDODQuNjE0NSA0My41NzM1IDg0Ljc1MTggNDQuMDQwOCA4NC45NSA0NC40NjU5Qzg1LjE0ODIgNDQuODkxNSA4NS40MjY1IDQ1LjI0MDggODUuNzg1MiA0NS41MTQ0Qzg2LjE0MzMgNDUuNzg3OSA4Ni41OTcyIDQ1LjkzOTcgODcuMTQ2MyA0NS45NzA0Qzg3LjcxMDEgNDYuMDAwNSA4OC4yMDIgNDUuOTU5MSA4OC42MjE3IDQ1Ljg0NDlDODkuMDQxIDQ1LjczMSA4OS40MjIxIDQ1LjU1MjMgODkuNzY1NCA0NS4zMDkxQzkwLjEwODQgNDUuMDY2NSA5MC40MjEgNDQuNzc3NiA5MC43MDMzIDQ0LjQ0M0M5MC45ODUxIDQ0LjEwOTEgOTEuMjYzNyA0My43NDQ0IDkxLjUzODMgNDMuMzQ5MUM5MS43OTc0IDQzLjkyNjkgOTIuMTMyOSA0NC4zNzQ4IDkyLjU0NDcgNDQuNjk0QzkyLjk1NjUgNDUuMDEzIDkzLjM5MTMgNDUuMjAzMiA5My44NDg2IDQ1LjI2MzdDOTQuMzA2IDQ1LjMyNDEgOTQuNzcxNSA0NS4yNjAyIDk1LjI0NDIgNDUuMDY5OUM5NS43MTY3IDQ0Ljg4MDMgOTYuMTQzNiA0NC41NTczIDk2LjUyNTIgNDQuMTAxMkM5Ni43NzYyIDQzLjgyMTYgOTcuMDEzMSA0My41MDM4IDk3LjIzNTQgNDMuMTUyNUM5Ny4zMjk3IDQzLjMxNyA5Ny40MzAxIDQzLjQ3NTggOTcuNTQzIDQzLjYyMjRDOTcuOTE2OCA0NC4xMDkxIDk4LjQyNCA0NC40NDMgOTkuMDY0NSA0NC42MjU1Qzk5Ljc1MDYgNDQuODA4IDEwMC40MjEgNDQuODM4NiAxMDEuMDc3IDQ0LjcxNjlDMTAxLjczMyA0NC41OTU0IDEwMi4zNTggNDQuMzc0OCAxMDIuOTUzIDQ0LjA1NTlDMTAzLjU0OCA0My43MzY2IDEwNC4xMDEgNDMuMzUzMiAxMDQuNjEyIDQyLjkwNDdDMTA1LjEyMiA0Mi40NTY1IDEwNS41NjggNDEuOTg5NSAxMDUuOTUgNDEuNTAyOEMxMDUuOTM0IDQxLjg1MjQgMTA1LjkyNyA0Mi4xODMyIDEwNS45MjcgNDIuNDk0NEMxMDUuOTI3IDQyLjgwNjEgMTA1LjkxOSA0My4xNDM4IDEwNS45MDQgNDMuNTA4OEMxMDUuMTQxIDQ0LjA0MDggMTA0LjQyMSA0NC42NzkgMTAzLjc0MiA0NS40MjMzQzEwMy4wNjQgNDYuMTY3NiAxMDIuNDY5IDQ2Ljk2MTYgMTAxLjk1OCA0Ny44MDUxQzEwMS40NDcgNDguNjQ4MyAxMDEuMDQ3IDQ5LjUwMzEgMTAwLjc1NyA1MC4zNjkxQzEwMC40NjcgNTEuMjM1NyAxMDAuMzI2IDUyLjA0NDUgMTAwLjMzNCA1Mi43OTY5QzEwMC4zNDEgNTMuNTQ5IDEwMC41MjEgNTQuMjA2IDEwMC44NzEgNTQuNzY4MUMxMDEuMjIyIDU1LjMzMDYgMTAxLjc5NCA1NS43MzMxIDEwMi41ODcgNTUuOTc2M0MxMDMuNDExIDU2LjIzNDggMTA0LjEzNSA1Ni4yNDIgMTA0Ljc2IDU1Ljk5OTFDMTA1LjM4NiA1NS43NTU5IDEwNS45MzEgNTUuMzUzMSAxMDYuMzk2IDU0Ljc5MUMxMDYuODYxIDU0LjIyODkgMTA3LjI0MiA1My41NDkgMTA3LjU0IDUyLjc1MTJDMTA3LjgzNyA1MS45NTM0IDEwOC4wNzMgNTEuMTIxNSAxMDguMjQ5IDUwLjI1NTVDMTA4LjQyNCA0OS4zODk0IDEwOC41MzUgNDguNTM3OSAxMDguNTggNDcuNzAyOEMxMDguNjI2IDQ2Ljg2NjggMTA4LjYyNiA0Ni4xMjE5IDEwOC41OCA0NS40Njg3QzEwOS44OTIgNDQuOTIxOSAxMTAuOTY3IDQ0LjIzMDUgMTExLjgwNiA0My4zOTQ1QzExMi42NDUgNDIuNTU5NCAxMTMuMzM4IDQxLjY3NzggMTEzLjg4NyA0MC43NTA3QzExNC4wNTUgNDAuNTIyOSAxMTQuMTEyIDQwLjI0OTMgMTE0LjA1OSAzOS45MzA0QzExNC4wMDYgMzkuNjExMSAxMTMuODc2IDM5LjMzNzYgMTEzLjY3IDM5LjEwOTdaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XHJcbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNDIuNTMgMzcuNjUxNUMxNDIuNTc1IDM3LjMwMjIgMTQyLjY0NCAzNi45MzM1IDE0Mi43MzUgMzYuNTQ2QzE0Mi44MjcgMzYuMTU4NSAxNDIuOTQxIDM1Ljc4MjMgMTQzLjA3OSAzNS40MTc3QzE0My4yMTYgMzUuMDUzMSAxNDMuMzc2IDM0LjczNzkgMTQzLjU1OSAzNC40NzE4QzE0My43NDIgMzQuMjA2MSAxNDMuOTM3IDM0LjAxNjEgMTQ0LjE0MiAzMy45MDE5QzE0NC4zNDggMzMuNzg4MyAxNDQuNTU4IDMzLjc5OTUgMTQ0Ljc3MSAzMy45MzZDMTQ1IDM0LjA3MzEgMTQ1LjE0MSAzNC4zNjE3IDE0NS4xOTUgMzQuODAyMUMxNDUuMjQ4IDM1LjI0MzMgMTQ1LjE5NSAzNS43MTQxIDE0NS4wMzQgMzYuMjE1NUMxNDQuODc0IDM2LjcxNzIgMTQ0LjU4OCAzNy4xODc5IDE0NC4xNzcgMzcuNjI4NkMxNDMuNzY1IDM4LjA2OTYgMTQzLjIwOCAzOC4zNTc5IDE0Mi41MDcgMzguNDk0N0MxNDIuNDc2IDM4LjI4MjQgMTQyLjQ4NCAzOC4wMDExIDE0Mi41MyAzNy42NTE1Wk0xNTAuNDU2IDM4LjU4NTdDMTUwLjIwNCAzOC41MTAzIDE0OS45NjQgMzguNTAyNSAxNDkuNzM1IDM4LjU2MzJDMTQ5LjUwNiAzOC42MjM5IDE0OS4zNjEgMzguNzgzNSAxNDkuMzAxIDM5LjA0MkMxNDkuMTc4IDM5LjUyODEgMTQ4Ljk4NCA0MC4wMjU4IDE0OC43MTcgNDAuNTM0N0MxNDguNDUgNDEuMDQzOSAxNDguMTIyIDQxLjUyNjIgMTQ3LjczNCA0MS45ODIyQzE0Ny4zNDUgNDIuNDM4IDE0Ni45MDYgNDIuODQwOCAxNDYuNDE4IDQzLjE5MDFDMTQ1LjkzIDQzLjUzOTcgMTQ1LjQxOSA0My43OTA0IDE0NC44ODYgNDMuOTQyMkMxNDQuMzUxIDQ0LjEwOTYgMTQzLjkxIDQ0LjEyODQgMTQzLjU1OSA0My45OTkxQzE0My4yMDggNDMuODcwNSAxNDIuOTMgNDMuNjQ5OCAxNDIuNzI0IDQzLjMzODRDMTQyLjUxOCA0My4wMjcgMTQyLjM2OSA0Mi42NTA4IDE0Mi4yNzggNDIuMjEwMUMxNDIuMTg2IDQxLjc2OTQgMTQyLjEzMyA0MS4zMTM3IDE0Mi4xMTggNDAuODQyNEMxNDIuOTg3IDQwLjkwMzQgMTQzLjc2MSA0MC43NDc4IDE0NC40NCA0MC4zNzUxQzE0NS4xMTggNDAuMDAzMiAxNDUuNjk0IDM5LjUwOSAxNDYuMTY3IDM4Ljg5MzdDMTQ2LjYzOSAzOC4yNzg0IDE0Ni45OTggMzcuNTg3IDE0Ny4yNDIgMzYuODE5NUMxNDcuNDg1IDM2LjA1MjQgMTQ3LjYyMyAzNS4yODg3IDE0Ny42NTMgMzQuNTI4OEMxNDcuNjY5IDMzLjgxNDYgMTQ3LjU2MiAzMy4yMTA4IDE0Ny4zMzMgMzIuNzE2OUMxNDcuMTA1IDMyLjIyMzMgMTQ2Ljc5NiAzMS44MzkgMTQ2LjQwNyAzMS41NjU4QzE0Ni4wMTggMzEuMjkyMiAxNDUuNTcyIDMxLjEzMjYgMTQ1LjA2OSAzMS4wODcyQzE0NC41NjYgMzEuMDQxNSAxNDQuMDU0IDMxLjExIDE0My41MzYgMzEuMjkyMkMxNDIuOTEgMzEuNTA1IDE0Mi4zODEgMzEuODUwNiAxNDEuOTQ2IDMyLjMyOTRDMTQxLjUxMiAzMi44MDggMTQxLjE0OSAzMy4zNjI5IDE0MC44NiAzMy45OTMzQzE0MC41NyAzNC42MjM5IDE0MC4zNDEgMzUuMzAzOCAxNDAuMTczIDM2LjAzM0MxNDAuMDA1IDM2Ljc2MjYgMTM5Ljg4MyAzNy40ODA2IDEzOS44MDcgMzguMTg3M0MxMzkuNzM5IDM4LjgyMTQgMTM5LjcwMiAzOS40Mjc4IDEzOS42ODkgNDAuMDEzQzEzOS42NTcgNDAuMDg3NCAxMzkuNjI1IDQwLjE1ODggMTM5LjU5IDQwLjIzODNDMTM5LjM1NCA0MC43NzgyIDEzOS4wNzkgNDEuMzA2MiAxMzguNzY2IDQxLjgyMjZDMTM4LjQ1NCA0Mi4zMzk0IDEzOC4xMDcgNDIuNzcyNSAxMzcuNzI2IDQzLjEyMThDMTM3LjM0NCA0My40NzE0IDEzNi45NDggNDMuNTkyOSAxMzYuNTM2IDQzLjQ4NjVDMTM2LjI5MiA0My40MjYgMTM2LjE1OSA0My4xNDQ0IDEzNi4xMzYgNDIuNjQzM0MxMzYuMTEzIDQyLjE0MTYgMTM2LjEzOSA0MS41MTg3IDEzNi4yMTYgNDAuNzc0MUMxMzYuMjkyIDQwLjAyOTggMTM2LjM4IDM5LjIyMzkgMTM2LjQ3OSAzOC4zNTc5QzEzNi41NzggMzcuNDkxOCAxMzYuNjI4IDM2LjY2NCAxMzYuNjI4IDM1Ljg3MzdDMTM2LjYyOCAzNS4xODk4IDEzNi40OTggMzQuNTMyOSAxMzYuMjM5IDMzLjkwMTlDMTM1Ljk3OSAzMy4yNzE4IDEzNS42MjUgMzIuNzQ3MyAxMzUuMTc1IDMyLjMyOTRDMTM0LjcyNSAzMS45MTEzIDEzNC4yMDMgMzEuNjM0IDEzMy42MDggMzEuNDk3NUMxMzMuMDEzIDMxLjM2MDUgMTMyLjM3MyAzMS40NTE4IDEzMS42ODcgMzEuNzcwOEMxMzEgMzIuMDkgMTMwLjQ1NSAzMi41MzgyIDEzMC4wNTEgMzMuMTE1N0MxMjkuNjQ3IDMzLjY5MzQgMTI5LjI3NyAzNC4zMDA5IDEyOC45NDIgMzQuOTM5MUMxMjguODE5IDM0LjQ1MjggMTI4LjY0MSAzNC4wMDExIDEyOC40MDQgMzMuNTgzQzEyOC4xNjcgMzMuMTY1MSAxMjcuODc4IDMyLjgwMDUgMTI3LjUzNSAzMi40ODg4QzEyNy4xOTEgMzIuMTc3NiAxMjYuODA2IDMxLjkzNDQgMTI2LjM4IDMxLjc1OTVDMTI1Ljk1MyAzMS41ODUxIDEyNS41MDIgMzEuNDk3NSAxMjUuMDMgMzEuNDk3NUMxMjQuNTcyIDMxLjQ5NzUgMTI0LjE0OSAzMS41ODUxIDEyMy43NiAzMS43NTk1QzEyMy4zNzEgMzEuOTM0NCAxMjMuMDE3IDMyLjE1ODMgMTIyLjY5NiAzMi40MzE4QzEyMi4zNzYgMzIuNzA1NiAxMjIuMDg3IDMzLjAxMyAxMjEuODI3IDMzLjM1NTFDMTIxLjU2OCAzMy42OTY5IDEyMS4zMzkgMzQuMDM1MiAxMjEuMTQxIDM0LjM2OTJDMTIxLjExIDMzLjk3NDIgMTIxLjA3NiAzMy42Mjg2IDEyMS4wMzggMzMuMzMyQzEyMSAzMy4wMzU5IDEyMC45MzEgMzIuNzg1MiAxMjAuODMyIDMyLjU4MDFDMTIwLjczMyAzMi4zNzQ4IDEyMC41OTIgMzIuMjE5MyAxMjAuNDA5IDMyLjExMjlDMTIwLjIyNiAzMi4wMDY3IDExOS45NjcgMzEuOTUzMiAxMTkuNjMyIDMxLjk1MzJDMTE5LjQ2NCAzMS45NTMyIDExOS4yOTYgMzEuOTg3NCAxMTkuMTI4IDMyLjA1NTZDMTE4Ljk2IDMyLjEyNDEgMTE4LjgxMSAzMi4yMTkzIDExOC42ODIgMzIuMzQwN0MxMTguNTUyIDMyLjQ2MjcgMTE4LjQ1MyAzMi42MTA1IDExOC4zODUgMzIuNzg1MkMxMTguMzE2IDMyLjk1OTggMTE4LjI5NyAzMy4xNjE0IDExOC4zMjcgMzMuMzg5MkMxMTguMzQyIDMzLjU1NjYgMTE4LjM4NSAzMy43NTc2IDExOC40NTMgMzMuOTkzM0MxMTguNTIyIDM0LjIyODkgMTE4LjU4NyAzNC41MzY5IDExOC42NDggMzQuOTE2M0MxMTguNzA4IDM1LjI5NjIgMTE4Ljc1OCAzNS43NTYgMTE4Ljc5NiAzNi4yOTUzQzExOC44MzQgMzYuODM0OSAxMTguODQ2IDM3LjQ5NTkgMTE4LjgzMSAzOC4yNzg0QzExOC44MTUgMzkuMDYxMSAxMTguNzU4IDM5Ljk3NjMgMTE4LjY1OSA0MS4wMjQ4QzExOC41NiA0Mi4wNzMzIDExOC40MDMgNDMuMjg5IDExOC4xOSA0NC42NzE0QzExOC4xNiA0NC45OTA3IDExOC4yODIgNDUuMjQ5MiAxMTguNTU2IDQ1LjQ0NjdDMTE4LjgzMSA0NS42NDM5IDExOS4xNDMgNDUuNzU3OCAxMTkuNDk0IDQ1Ljc4ODVDMTE5Ljg0NSA0NS44MTg4IDEyMC4xNzcgNDUuNzU3OCAxMjAuNDg5IDQ1LjYwNjNDMTIwLjgwMiA0NS40NTM5IDEyMC45ODEgNDUuMTg4MiAxMjEuMDI3IDQ0LjgwODVDMTIxLjA3MiA0NC4wOTQzIDEyMS4xNiA0My4zMzQ3IDEyMS4yOSA0Mi41MjlDMTIxLjQxOSA0MS43MjQgMTIxLjU3OSA0MC45MjYyIDEyMS43NyA0MC4xMzU5QzEyMS45NjEgMzkuMzQ2IDEyMi4xNzggMzguNTkzOCAxMjIuNDIyIDM3Ljg3OTNDMTIyLjY2NiAzNy4xNjUxIDEyMi45MzcgMzYuNTM0NyAxMjMuMjM0IDM1Ljk4NzZDMTIzLjUzMiAzNS40NDA1IDEyMy44NCAzNS4wMDM5IDEyNC4xNjEgMzQuNjc3MUMxMjQuNDgxIDM0LjM1MDQgMTI0LjgxNiAzNC4xODcgMTI1LjE2NyAzNC4xODdDMTI1LjU5NCAzNC4xODcgMTI1LjkyNiAzNC4zODA1IDEyNi4xNjIgMzQuNzY3OUMxMjYuMzk4IDM1LjE1NTcgMTI2LjU2NiAzNS42NTM2IDEyNi42NjYgMzYuMjYwOUMxMjYuNzY1IDM2Ljg2OSAxMjYuODEgMzcuNTM0MSAxMjYuODAzIDM4LjI1NTVDMTI2Ljc5NSAzOC45NzczIDEyNi43NjUgMzkuNjcyNCAxMjYuNzExIDQwLjM0MUMxMjYuNjU4IDQxLjAwOTggMTI2LjU5NyA0MS42MDYgMTI2LjUyOCA0Mi4xMzAzQzEyNi40NiA0Mi42NTQ1IDEyNi40MSA0My4wMTU3IDEyNi4zOCA0My4yMTI5QzEyNi4zOCA0My41NjI1IDEyNi41MTMgNDMuODM5NSAxMjYuNzggNDQuMDQ0OEMxMjcuMDQ2IDQ0LjI0OTggMTI3LjM0NCA0NC4zNzE2IDEyNy42NzIgNDQuNDA5NUMxMjggNDQuNDQ3NiAxMjguMzA5IDQ0LjM4NjYgMTI4LjU5OCA0NC4yMjdDMTI4Ljg4OCA0NC4wNjc0IDEyOS4wNTYgNDMuNzk4MiAxMjkuMTAyIDQzLjQxNzlDMTI5LjI1NCA0Mi4zMjQgMTI5LjQ2NCA0MS4yMjY0IDEyOS43MzEgNDAuMTI0N0MxMjkuOTk3IDM5LjAyMyAxMzAuMzAzIDM4LjAzNTUgMTMwLjY0NiAzNy4xNjE2QzEzMC45ODkgMzYuMjg3OCAxMzEuMzcgMzUuNTczNSAxMzEuNzkgMzUuMDE4OUMxMzIuMjA5IDM0LjQ2NDYgMTMyLjY1NSAzNC4xODcgMTMzLjEyOCAzNC4xODdDMTMzLjM3MSAzNC4xODcgMTMzLjU1OSAzNC4zNTQ0IDEzMy42ODggMzQuNjg4NEMxMzMuODE4IDM1LjAyMjcgMTMzLjg4MyAzNS40Nzg0IDEzMy44ODMgMzYuMDU1OUMxMzMuODgzIDM2LjQ4MTUgMTMzLjg0OCAzNi45MTg0IDEzMy43OCAzNy4zNjY2QzEzMy43MTEgMzcuODE0OCAxMzMuNjMxIDM4LjI3ODQgMTMzLjU0IDM4Ljc1NjlDMTMzLjQ0OCAzOS4yMzU4IDEzMy4zNjggMzkuNzI1NiAxMzMuMjk5IDQwLjIyN0MxMzMuMjMxIDQwLjcyODcgMTMzLjE5NiA0MS4yNTI3IDEzMy4xOTYgNDEuNzk5OEMxMzMuMTk2IDQyLjE3OTcgMTMzLjIzNSA0Mi42MjA0IDEzMy4zMTEgNDMuMTIxOEMxMzMuMzg3IDQzLjYyMjkgMTMzLjUzMiA0NC4wOTgzIDEzMy43NDUgNDQuNTQ2MkMxMzMuOTU5IDQ0Ljk5NDcgMTM0LjI1MiA0NS4zNzQ0IDEzNC42MjYgNDUuNjg1OEMxMzUgNDUuOTk3MyAxMzUuNDc2IDQ2LjE1MzEgMTM2LjA1NiA0Ni4xNTMxQzEzNi45MjUgNDYuMTUzMSAxMzcuNjk1IDQ1Ljk2NjkgMTM4LjM2NiA0NS41OTQ3QzEzOS4wMzcgNDUuMjIyNiAxMzkuNjEzIDQ0LjczNjUgMTQwLjA5MyA0NC4xMzYyQzE0MC4xMTggNDQuMTA0NyAxNDAuMTQxIDQ0LjA3MTEgMTQwLjE2NSA0NC4wMzk5QzE0MC4yMDIgNDQuMTI4NyAxNDAuMjM1IDQ0LjIyMjcgMTQwLjI3NiA0NC4zMDcxQzE0MC42MDQgNDQuOTc1NiAxNDEuMDUgNDUuNDkyMSAxNDEuNjE1IDQ1Ljg1N0MxNDIuMTc4IDQ2LjIyMTYgMTQyLjg0MiA0Ni40MjI5IDE0My42MDUgNDYuNDYxMUMxNDQuMzY3IDQ2LjQ5ODcgMTQ1LjE5OCA0Ni4zNTgxIDE0Ni4wOTggNDYuMDM5MkMxNDYuNzY5IDQ1Ljc5NiAxNDcuMzUyIDQ1LjQ5MjEgMTQ3Ljg0OCA0NS4xMjc1QzE0OC4zNDMgNDQuNzYyOCAxNDguNzg5IDQ0LjMxODQgMTQ5LjE4NiA0My43OTQxQzE0OS41ODMgNDMuMjY5OSAxNDkuOTQ1IDQyLjY2NTggMTUwLjI3MyA0MS45ODIyQzE1MC42MDEgNDEuMjk4MSAxNTAuOTMyIDQwLjUxNTkgMTUxLjI2OCAzOS42MzQyQzE1MS4zMjkgMzkuMzkxNiAxNTEuMjcyIDM5LjE3NTEgMTUxLjA5NyAzOC45ODQ4QzE1MC45MjEgMzguNzk1MSAxNTAuNzA4IDM4LjY2MjEgMTUwLjQ1NiAzOC41ODU3WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxyXG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTYyLjg4NyAzNi4wNDM0QzE2Mi44MSAzNi40OTE4IDE2Mi43MDcgMzYuOTg2IDE2Mi41NzggMzcuNTI1QzE2Mi40NDggMzguMDY0NiAxNjIuMjg0IDM4LjYyMyAxNjIuMDg2IDM5LjIwMDRDMTYxLjg4OCAzOS43Nzc5IDE2MS42NDQgNDAuMjk4NCAxNjEuMzU0IDQwLjc2MTZDMTYxLjA2NCA0MS4yMjU0IDE2MC43MzMgNDEuNTkzNSAxNjAuMzU5IDQxLjg2NzFDMTU5Ljk4NSA0Mi4xNDA2IDE1OS41NTUgNDIuMjU0NiAxNTkuMDY2IDQyLjIwODlDMTU4LjgyMiA0Mi4xNzg4IDE1OC42MzUgNDIuMDExNyAxNTguNTA2IDQxLjcwNzVDMTU4LjM3NiA0MS40MDM4IDE1OC4zMDggNDEuMDE2MSAxNTguMyA0MC41NDVDMTU4LjI5MiA0MC4wNzQzIDE1OC4zMzQgMzkuNTU3NSAxNTguNDI2IDM4Ljk5NTFDMTU4LjUxNyAzOC40MzMzIDE1OC42NTggMzcuODgyMSAxNTguODQ5IDM3LjM0MjZDMTU5LjA0IDM2LjgwMzYgMTU5LjI3MiAzNi4zMDU2IDE1OS41NDcgMzUuODQ5NkMxNTkuODIxIDM1LjM5MzkgMTYwLjEzOCAzNS4wNDA1IDE2MC40OTYgMzQuNzg5OEMxNjAuODU0IDM0LjUzOTEgMTYxLjI0NyAzNC40MjE3IDE2MS42NzQgMzQuNDM2NUMxNjIuMTAxIDM0LjQ1MTggMTYyLjU1OSAzNC42NjQzIDE2My4wNDcgMzUuMDc0N0MxNjMuMDE2IDM1LjI3MjUgMTYyLjk2MyAzNS41OTU0IDE2Mi44ODcgMzYuMDQzNFpNMTcxLjAxOSAzNy43ODdDMTcwLjc4MiAzNy42NjU2IDE3MC41MzggMzcuNjM5MiAxNzAuMjg3IDM3LjcwNzVDMTcwLjAzNSAzNy43NzU3IDE2OS44NTYgMzguMDA3NiAxNjkuNzQ5IDM4LjQwMjZDMTY5LjY4OCAzOC44MjgzIDE2OS41NTEgMzkuMzI5NCAxNjkuMzM4IDM5LjkwNjlDMTY5LjEyNCA0MC40ODQzIDE2OC44NjEgNDEuMDMxNyAxNjguNTQ4IDQxLjU0NzhDMTY4LjIzNiA0Mi4wNjQ2IDE2Ny44NzcgNDIuNDk0IDE2Ny40NzMgNDIuODM1OEMxNjcuMDY5IDQzLjE3NzggMTY2LjYzOCA0My4zMzM3IDE2Ni4xODEgNDMuMzAyOEMxNjUuNzk5IDQzLjI3MjcgMTY1LjUzMiA0My4wNzkgMTY1LjM4IDQyLjcyMThDMTY1LjIyNyA0Mi4zNjQ3IDE2NS4xNDcgNDEuOTE2OCAxNjUuMTQgNDEuMzc2OUMxNjUuMTMyIDQwLjgzOCAxNjUuMTg2IDQwLjIzMDEgMTY1LjMgMzkuNTUzOEMxNjUuNDE0IDM4Ljg3NzcgMTY1LjU1MiAzOC4yMDU0IDE2NS43MTIgMzcuNTM2M0MxNjUuODcyIDM2Ljg2OCAxNjYuMDM2IDM2LjIyNTggMTY2LjIwNCAzNS42MTA1QzE2Ni4zNzEgMzQuOTk1MSAxNjYuNTA4IDM0LjQ3NDcgMTY2LjYxNiAzNC4wNDkzQzE2Ni43MzggMzMuNjY5MyAxNjYuNjk5IDMzLjM0NjYgMTY2LjUwMSAzMy4wODAzQzE2Ni4zMDMgMzIuODE0OSAxNjYuMDU1IDMyLjYyNDYgMTY1Ljc1OCAzMi41MTA3QzE2NS40NiAzMi4zOTY3IDE2NS4xNTkgMzIuMzY2NCAxNjQuODU0IDMyLjQxOTZDMTY0LjU0OSAzMi40NzI4IDE2NC4zNTEgMzIuNjM2MiAxNjQuMjU5IDMyLjkwOTRDMTYzLjM1OSAzMi4xMzQ1IDE2Mi40OTQgMzEuNzE2NiAxNjEuNjYzIDMxLjY1NTlDMTYwLjgzMSAzMS41OTUyIDE2MC4wNjUgMzEuNzc3NiAxNTkuMzY0IDMyLjIwM0MxNTguNjYyIDMyLjYyODQgMTU4LjA0MSAzMy4yNDM3IDE1Ny41IDM0LjA0OTNDMTU2Ljk1OCAzNC44NTQ5IDE1Ni41MiAzNS43MzIyIDE1Ni4xODQgMzYuNjgxOEMxNTUuODQ5IDM3LjYzMTQgMTU1LjYzOSAzOC42MDA0IDE1NS41NTUgMzkuNTg3OUMxNTUuNDcxIDQwLjU3NTcgMTU1LjUzNiA0MS40NzYxIDE1NS43NSA0Mi4yODlDMTU1Ljk2MyA0My4xMDE4IDE1Ni4zNCA0My43NjY5IDE1Ni44ODIgNDQuMjgzQzE1Ny40MjMgNDQuNzk5OCAxNTguMTU5IDQ1LjA1ODMgMTU5LjA4OSA0NS4wNTgzQzE1OS41MDEgNDUuMDU4MyAxNTkuODk4IDQ0Ljk3NDcgMTYwLjI3OSA0NC44MDc2QzE2MC42NiA0NC42NDAxIDE2MS4wMTEgNDQuNDQyNiAxNjEuMzMxIDQ0LjIxNDhDMTYxLjY1MSA0My45ODY5IDE2MS45MzMgNDMuNzQ3NSAxNjIuMTc4IDQzLjQ5NjhDMTYyLjQyMSA0My4yNDYxIDE2Mi42MTIgNDMuMDM3MyAxNjIuNzQ5IDQyLjg2OTlDMTYyLjg1NiA0My40MTcgMTYzLjAzMiA0My44ODA4IDE2My4yNzYgNDQuMjYwNUMxNjMuNTE5IDQ0LjY0MDEgMTYzLjc5OCA0NC45NTIxIDE2NC4xMTEgNDUuMTk0OEMxNjQuNDIzIDQ1LjQzNzYgMTY0Ljc1MSA0NS42MTY0IDE2NS4wOTQgNDUuNzMwNkMxNjUuNDM3IDQ1Ljg0NDUgMTY1Ljc2OSA0NS45MDE1IDE2Ni4wODkgNDUuOTAxNUMxNjYuODA2IDQ1LjkwMTUgMTY3LjQ3NyA0NS42NTgzIDE2OC4xMDIgNDUuMTcxOUMxNjguNzI3IDQ0LjY4NjEgMTY5LjI4OCA0NC4wODkzIDE2OS43ODQgNDMuMzgyOUMxNzAuMjc5IDQyLjY3NjIgMTcwLjY4NyA0MS45MzE5IDE3MS4wMDcgNDEuMTQ5MUMxNzEuMzI4IDQwLjM2NjYgMTcxLjU0MSAzOS42NzE1IDE3MS42NDggMzkuMDYzNEMxNzEuNzU1IDM4LjgzNTUgMTcxLjczNSAzOC41OTY0IDE3MS41OTEgMzguMzQ1N0MxNzEuNDQ2IDM4LjA5NSAxNzEuMjU1IDM3LjkwOSAxNzEuMDE5IDM3Ljc4N1pcIiBmaWxsPVwiIzBEMEMyM1wiLz5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTIxMi4xOTQgNTAuMzcwMUMyMTIuMDY0IDUwLjg4NjYgMjExLjg2MiA1MS4zMjM4IDIxMS41ODcgNTEuNjgwNkMyMTEuMzEzIDUyLjAzNzcgMjEwLjk3IDUyLjIyMzkgMjEwLjU1OCA1Mi4yMzkzQzIxMC4yOTkgNTIuMjU0MyAyMTAuMTAxIDUyLjExNzUgMjA5Ljk2MyA1MS44Mjg5QzIwOS44MjYgNTEuNTQwMSAyMDkuNzMxIDUxLjE2NzkgMjA5LjY3OCA1MC43MTIyQzIwOS42MjQgNTAuMjU2MiAyMDkuNjAxIDQ5Ljc0NyAyMDkuNjA5IDQ5LjE4NDlDMjA5LjYxNiA0OC42MjI3IDIwOS42MzkgNDguMDY4MSAyMDkuNjc4IDQ3LjUyMUMyMDkuNzE1IDQ2Ljk3NDIgMjA5Ljc2MSA0Ni40NjQ3IDIwOS44MTUgNDUuOTkzOUMyMDkuODY4IDQ1LjUyMjYgMjA5LjkxIDQ1LjE1ODYgMjA5Ljk0IDQ0LjlDMjEwLjQ1OSA0NC45NjA4IDIxMC44OSA0NS4xODQ2IDIxMS4yMzMgNDUuNTcyM0MyMTEuNTc2IDQ1Ljk1OTggMjExLjgzOSA0Ni40MTkzIDIxMi4wMjIgNDYuOTUxNEMyMTIuMjA1IDQ3LjQ4MzEgMjEyLjMxMiA0OC4wNTY4IDIxMi4zNDMgNDguNjcyMkMyMTIuMzczIDQ5LjI4NzUgMjEyLjMyMyA0OS44NTM0IDIxMi4xOTQgNTAuMzcwMVpNMjAzLjkxMyA1MC4zNzAxQzIwMy43ODMgNTAuODg2NiAyMDMuNTgxIDUxLjMyMzggMjAzLjMwNyA1MS42ODA2QzIwMy4wMzIgNTIuMDM3NyAyMDIuNjg5IDUyLjIyMzkgMjAyLjI3NyA1Mi4yMzkzQzIwMi4wMTggNTIuMjU0MyAyMDEuODIgNTIuMTE3NSAyMDEuNjgzIDUxLjgyODlDMjAxLjU0NSA1MS41NDAxIDIwMS40NSA1MS4xNjc5IDIwMS4zOTcgNTAuNzEyMkMyMDEuMzQzIDUwLjI1NjIgMjAxLjMyIDQ5Ljc0NyAyMDEuMzI4IDQ5LjE4NDlDMjAxLjMzNiA0OC42MjI3IDIwMS4zNTggNDguMDY4MSAyMDEuMzk3IDQ3LjUyMUMyMDEuNDM0IDQ2Ljk3NDIgMjAxLjQ4IDQ2LjQ2NDcgMjAxLjUzNCA0NS45OTM5QzIwMS41ODcgNDUuNTIyNiAyMDEuNjI5IDQ1LjE1ODYgMjAxLjY2IDQ0LjlDMjAyLjE3OCA0NC45NjA4IDIwMi42MDkgNDUuMTg0NiAyMDIuOTUyIDQ1LjU3MjNDMjAzLjI5NSA0NS45NTk4IDIwMy41NTggNDYuNDE5MyAyMDMuNzQxIDQ2Ljk1MTRDMjAzLjkyNCA0Ny40ODMxIDIwNC4wMzEgNDguMDU2OCAyMDQuMDYyIDQ4LjY3MjJDMjA0LjA5MiA0OS4yODc1IDIwNC4wNDIgNDkuODUzNCAyMDMuOTEzIDUwLjM3MDFaTTE5NS40MTUgMzcuNDI0MUMxOTUuMzk5IDM3Ljc4ODQgMTk1LjM2NSAzOC4xMTE0IDE5NS4zMTIgMzguMzkyNUMxOTUuMjU4IDM4LjY3NDEgMTk1LjE4NiAzOC44NTIyIDE5NS4wOTUgMzguOTI4M0MxOTQuOTI3IDM4LjgzNjkgMTk0LjcyMSAzOC42MDE4IDE5NC40NzcgMzguMjIxNkMxOTQuMjMzIDM3Ljg0MTkgMTk0LjA0MiAzNy40MTIyIDE5My45MDUgMzYuOTMzNkMxOTMuNzY4IDM2LjQ1NTEgMTkzLjcyNSAzNS45ODQzIDE5My43NzkgMzUuNTIwNUMxOTMuODMyIDM1LjA1NzMgMTk0LjA3MyAzNC42OTY3IDE5NC41IDM0LjQzNzlDMTk0LjY2NyAzNC4zNDY4IDE5NC44MTIgMzQuMzgwOSAxOTQuOTM0IDM0LjU0MDVDMTk1LjA1NiAzNC43MDAxIDE5NS4xNTUgMzQuOTMxOCAxOTUuMjMyIDM1LjIzNTdDMTk1LjMwOCAzNS41Mzk5IDE5NS4zNjEgMzUuODg5MiAxOTUuMzkyIDM2LjI4NDJDMTk1LjQyMiAzNi42Nzk1IDE5NS40MyAzNy4wNTkxIDE5NS40MTUgMzcuNDI0MVpNMTkzLjM5IDQxLjk3MTFDMTkzLjE1NCA0Mi4yMjE1IDE5Mi44OSA0Mi40MzgxIDE5Mi42MDEgNDIuNjIwNkMxOTIuMzExIDQyLjgwMyAxOTIuMDE0IDQyLjkzOTggMTkxLjcwOSA0My4wMzA5QzE5MS40MDQgNDMuMTIyMyAxOTEuMTI5IDQzLjE0NDggMTkwLjg4NSA0My4wOTkxQzE5MC4xOTkgNDIuOTYyNyAxODkuNjczIDQyLjY2NiAxODkuMzA3IDQyLjIxMDNDMTg4Ljk0MSA0MS43NTQ1IDE4OC43MDggNDEuMjE5IDE4OC42MDkgNDAuNjAzN0MxODguNTEgMzkuOTg4MSAxODguNTIxIDM5LjMzMDggMTg4LjY0NCAzOC42MzE5QzE4OC43NjUgMzcuOTMzIDE4OC45NzEgMzcuMjgzNSAxODkuMjYxIDM2LjY4MzJDMTg5LjU1MSAzNi4wODI5IDE4OS45MDIgMzUuNTY2MiAxOTAuMzEzIDM1LjEzMzNDMTkwLjcyNSAzNC43MDAxIDE5MS4xNzUgMzQuNDMwNiAxOTEuNjYzIDM0LjMyMzlDMTkxLjQ4IDM1LjA5ODkgMTkxLjQxOSAzNS45MDA3IDE5MS40OCAzNi43Mjg2QzE5MS41NDEgMzcuNTU2OCAxOTEuNzM5IDM4LjMzNTUgMTkyLjA3NSAzOS4wNjQ4QzE5Mi4yODggMzkuNTA2IDE5Mi41NDQgMzkuOTA4MiAxOTIuODQxIDQwLjI3MjlDMTkzLjEzOSA0MC42Mzc4IDE5My41MDEgNDAuOTQ5MiAxOTMuOTI4IDQxLjIwNzVDMTkzLjgwNiA0MS40NjYgMTkzLjYyNiA0MS43MjA0IDE5My4zOSA0MS45NzExWk0yMTguNzAyIDM3LjY1MTlDMjE4Ljc0NyAzNy4zMDI2IDIxOC44MTYgMzYuOTMzNiAyMTguOTA4IDM2LjU0NjJDMjE4Ljk5OSAzNi4xNTkgMjE5LjExNCAzNS43ODI4IDIxOS4yNTEgMzUuNDE4MUMyMTkuMzg4IDM1LjA1MzIgMjE5LjU0OCAzNC43MzggMjE5LjczMSAzNC40NzIzQzIxOS45MTQgMzQuMjA2NSAyMjAuMTA4IDM0LjAxNjMgMjIwLjMxNCAzMy45MDI0QzIyMC41MiAzMy43ODg0IDIyMC43MyAzMy43OTk3IDIyMC45NDMgMzMuOTM2NUMyMjEuMTcyIDM0LjA3MzUgMjIxLjMxMyAzNC4zNjIxIDIyMS4zNjcgMzQuODAyNUMyMjEuNDIgMzUuMjQzNSAyMjEuMzY3IDM1LjcxNDIgMjIxLjIwNyAzNi4yMTU5QzIyMS4wNDYgMzYuNzE3MyAyMjAuNzYxIDM3LjE4ODQgMjIwLjM0OSAzNy42Mjg4QzIxOS45MzcgMzguMDcgMjE5LjM4IDM4LjM1ODMgMjE4LjY3OSAzOC40OTUxQzIxOC42NDggMzguMjgyNiAyMTguNjU2IDM4LjAwMTUgMjE4LjcwMiAzNy42NTE5Wk0yMjcuOTIxIDM3LjY1MTlDMjI3Ljk2NiAzNy4zMDI2IDIyOC4wMzUgMzYuOTMzNiAyMjguMTI2IDM2LjU0NjJDMjI4LjIxOCAzNi4xNTkgMjI4LjMzMiAzNS43ODI4IDIyOC40NyAzNS40MTgxQzIyOC42MDcgMzUuMDUzMiAyMjguNzY3IDM0LjczOCAyMjguOTUgMzQuNDcyM0MyMjkuMTMzIDM0LjIwNjUgMjI5LjMyOCAzNC4wMTYzIDIyOS41MzMgMzMuOTAyNEMyMjkuNzM5IDMzLjc4ODQgMjI5Ljk0OSAzMy43OTk3IDIzMC4xNjIgMzMuOTM2NUMyMzAuMzkxIDM0LjA3MzUgMjMwLjUzMiAzNC4zNjIxIDIzMC41ODYgMzQuODAyNUMyMzAuNjM5IDM1LjI0MzUgMjMwLjU4NiAzNS43MTQyIDIzMC40MjUgMzYuMjE1OUMyMzAuMjY1IDM2LjcxNzMgMjI5Ljk3OSAzNy4xODg0IDIyOS41NjggMzcuNjI4OEMyMjkuMTU2IDM4LjA3IDIyOC41OTkgMzguMzU4MyAyMjcuODk4IDM4LjQ5NTFDMjI3Ljg2NyAzOC4yODI2IDIyNy44NzUgMzguMDAxNSAyMjcuOTIxIDM3LjY1MTlaTTIzNi40ODggMzguOTg1MkMyMzYuMzEyIDM4Ljc5NTUgMjM2LjA5OSAzOC42NjI1IDIzNS44NDcgMzguNTg2MkMyMzUuNTk1IDM4LjUxMDQgMjM1LjM1NSAzOC41MDI5IDIzNS4xMjYgMzguNTYzNkMyMzQuODk3IDM4LjYyNDQgMjM0Ljc1MiAzOC43ODQgMjM0LjY5MiAzOS4wNDIyQzIzNC41NyAzOS41Mjg2IDIzNC4zNzUgNDAuMDI2MiAyMzQuMTA4IDQwLjUzNDlDMjMzLjg0MSA0MS4wNDQ0IDIzMy41MTQgNDEuNTI2NyAyMzMuMTI1IDQxLjk4MjRDMjMyLjczNiA0Mi40MzgxIDIzMi4yOTcgNDIuODQxMiAyMzEuODEgNDMuMTkwNUMyMzEuMzIxIDQzLjU0MDEgMjMwLjgxIDQzLjc5MDggMjMwLjI3NyA0My45NDIzQzIyOS43NDMgNDQuMTEwMSAyMjkuMzAxIDQ0LjEyODkgMjI4Ljk1IDQzLjk5OTZDMjI4LjU5OSA0My44NzA2IDIyOC4zMjEgNDMuNjUwMyAyMjguMTE1IDQzLjMzODlDMjI3LjkwOSA0My4wMjcxIDIyNy43NjEgNDIuNjUxMiAyMjcuNjY5IDQyLjIxMDNDMjI3LjU3OCA0MS43Njk5IDIyNy41MjQgNDEuMzE0MiAyMjcuNTA5IDQwLjg0MjhDMjI4LjM3OCA0MC45MDM4IDIyOS4xNTIgNDAuNzQ4MyAyMjkuODMxIDQwLjM3NTVDMjMwLjUwOSA0MC4wMDM0IDIzMS4wODUgMzkuNTA5MiAyMzEuNTU4IDM4Ljg5MzlDMjMyLjAzMSAzOC4yNzg4IDIzMi4zODkgMzcuNTg3NCAyMzIuNjMzIDM2LjgyQzIzMi44NzcgMzYuMDUyNiAyMzMuMDE0IDM1LjI4OTIgMjMzLjA0NSAzNC41MjkzQzIzMy4wNiAzMy44MTUgMjMyLjk1MyAzMy4yMTEgMjMyLjcyNCAzMi43MTcxQzIzMi40OTYgMzIuMjIzNSAyMzIuMTg3IDMxLjgzOTUgMjMxLjc5OCAzMS41NjYyQzIzMS40MDkgMzEuMjkyNCAyMzAuOTYzIDMxLjEzMyAyMzAuNDYgMzEuMDg3NEMyMjkuOTU3IDMxLjA0MTcgMjI5LjQ0NSAzMS4xMTA1IDIyOC45MjcgMzEuMjkyNEMyMjguMzAyIDMxLjUwNTUgMjI3Ljc3MiAzMS44NTEgMjI3LjMzOCAzMi4zMjk2QzIyNi45MDMgMzIuODA4NSAyMjYuNTQgMzMuMzYzNCAyMjYuMjUxIDMzLjk5MzRDMjI1Ljk2MSAzNC42MjQ0IDIyNS43MzIgMzUuMzAzOSAyMjUuNTY0IDM2LjAzMzVDMjI1LjM5NiAzNi43NjI3IDIyNS4yNzQgMzcuNDgxIDIyNS4xOTkgMzguMTg3NEMyMjUuMTI0IDM4Ljg3MyAyMjUuMDg0IDM5LjUyOTIgMjI1LjA3NSA0MC4xNTcyQzIyNS4wMTcgNDAuMjgyNCAyMjQuOTU2IDQwLjQwODIgMjI0Ljg4OSA0MC41MzQ5QzIyNC42MjIgNDEuMDQ0NCAyMjQuMjk1IDQxLjUyNjcgMjIzLjkwNiA0MS45ODI0QzIyMy41MTcgNDIuNDM4MSAyMjMuMDc4IDQyLjg0MTIgMjIyLjU5MSA0My4xOTA1QzIyMi4xMDIgNDMuNTQwMSAyMjEuNTkyIDQzLjc5MDggMjIxLjA1OCA0My45NDIzQzIyMC41MjQgNDQuMTEwMSAyMjAuMDgyIDQ0LjEyODkgMjE5LjczMSA0My45OTk2QzIxOS4zOCA0My44NzA2IDIxOS4xMDIgNDMuNjUwMyAyMTguODk2IDQzLjMzODlDMjE4LjY5MSA0My4wMjcxIDIxOC41NDIgNDIuNjUxMiAyMTguNDUgNDIuMjEwM0MyMTguMzU5IDQxLjc2OTkgMjE4LjMwNSA0MS4zMTQyIDIxOC4yOSA0MC44NDI4QzIxOS4xNTkgNDAuOTAzOCAyMTkuOTMzIDQwLjc0ODMgMjIwLjYxMiA0MC4zNzU1QzIyMS4yOSA0MC4wMDM0IDIyMS44NjYgMzkuNTA5MiAyMjIuMzM5IDM4Ljg5MzlDMjIyLjgxMSAzOC4yNzg4IDIyMy4xNyAzNy41ODc0IDIyMy40MTQgMzYuODJDMjIzLjY1OCAzNi4wNTI2IDIyMy43OTUgMzUuMjg5MiAyMjMuODI2IDM0LjUyOTNDMjIzLjg0MSAzMy44MTUgMjIzLjczNCAzMy4yMTEgMjIzLjUwNiAzMi43MTcxQzIyMy4yNzcgMzIuMjIzNSAyMjIuOTY4IDMxLjgzOTUgMjIyLjU3OSAzMS41NjYyQzIyMi4xOSAzMS4yOTI0IDIyMS43NDQgMzEuMTMzIDIyMS4yNDEgMzEuMDg3NEMyMjAuNzM4IDMxLjA0MTcgMjIwLjIyNyAzMS4xMTA1IDIxOS43MDggMzEuMjkyNEMyMTkuMDgzIDMxLjUwNTUgMjE4LjU1MyAzMS44NTEgMjE4LjExOSAzMi4zMjk2QzIxNy42ODQgMzIuODA4NSAyMTcuMzIxIDMzLjM2MzQgMjE3LjAzMiAzMy45OTM0QzIxNi43NDIgMzQuNjI0NCAyMTYuNTEzIDM1LjMwMzkgMjE2LjM0NiAzNi4wMzM1QzIxNi4xNzggMzYuNzYyNyAyMTYuMDU2IDM3LjQ4MSAyMTUuOTggMzguMTg3NEMyMTUuOTM2IDM4LjU4NTkgMjE1LjkwNyAzOC45NzIyIDIxNS44ODYgMzkuMzUxNkMyMTUuNzM5IDM5LjQ3NjUgMjE1LjU5NSAzOS42MDIzIDIxNS40NDIgMzkuNzI1OEMyMTQuOTE2IDQwLjE1MTQgMjE0LjM2MyA0MC41MzQ5IDIxMy43ODQgNDAuODc2OUMyMTMuMjA0IDQxLjIxOSAyMTIuNjAxIDQxLjUwMDEgMjExLjk3NyA0MS43MjA0QzIxMS4zNTEgNDEuOTQwOCAyMTAuNzEgNDIuMDczOCAyMTAuMDU1IDQyLjExOTJMMjExLjQ3MyAyNi45ODQ3QzIxMS41NjUgMjYuNjY1NSAyMTEuNTE5IDI2LjM4NDcgMjExLjMzNiAyNi4xNDE1QzIxMS4xNTMgMjUuODk4MyAyMTAuOTE2IDI1LjczMTIgMjEwLjYyNyAyNS42NDAxQzIxMC4zMzcgMjUuNTQ4OCAyMTAuMDI4IDI1LjU1NjYgMjA5LjcgMjUuNjYyN0MyMDkuMzcyIDI1Ljc2OTQgMjA5LjEwMiAyNi4wMTI2IDIwOC44ODggMjYuMzkxOUMyMDguNzgxIDI2Ljk2OTcgMjA4LjY3MSAyNy43NTk3IDIwOC41NTcgMjguNzYyNUMyMDguNDQyIDI5Ljc2NTMgMjA4LjMyOCAzMC44NTk1IDIwOC4yMTMgMzIuMDQ0OEMyMDguMDk5IDMzLjIzIDIwNy45ODUgMzQuNDUzMiAyMDcuODcgMzUuNzE0MkMyMDcuNzU2IDM2Ljk3NTkgMjA3LjY1NyAzOC4xNTMzIDIwNy41NzMgMzkuMjQ3MkMyMDcuNTY5IDM5LjI5NTggMjA3LjU2NiAzOS4zMzk4IDIwNy41NjIgMzkuMzg3OEMyMDcuNDI5IDM5LjUwMDUgMjA3LjI5OSAzOS42MTQyIDIwNy4xNjEgMzkuNzI1OEMyMDYuNjM1IDQwLjE1MTQgMjA2LjA4MiA0MC41MzQ5IDIwNS41MDMgNDAuODc2OUMyMDQuOTIzIDQxLjIxOSAyMDQuMzIxIDQxLjUwMDEgMjAzLjY5NiA0MS43MjA0QzIwMy4wNyA0MS45NDA4IDIwMi40MjkgNDIuMDczOCAyMDEuNzc0IDQyLjExOTJMMjAzLjE5MiAyNi45ODQ3QzIwMy4yODQgMjYuNjY1NSAyMDMuMjM4IDI2LjM4NDcgMjAzLjA1NSAyNi4xNDE1QzIwMi44NzIgMjUuODk4MyAyMDIuNjM1IDI1LjczMTIgMjAyLjM0NiAyNS42NDAxQzIwMi4wNTYgMjUuNTQ4OCAyMDEuNzQ3IDI1LjU1NjYgMjAxLjQxOSAyNS42NjI3QzIwMS4wOTEgMjUuNzY5NCAyMDAuODIxIDI2LjAxMjYgMjAwLjYwNyAyNi4zOTE5QzIwMC41MDEgMjYuOTY5NyAyMDAuMzkgMjcuNzU5NyAyMDAuMjc2IDI4Ljc2MjVDMjAwLjE2MSAyOS43NjUzIDIwMC4wNDcgMzAuODU5NSAxOTkuOTMzIDMyLjA0NDhDMTk5LjgxOCAzMy4yMyAxOTkuNzA0IDM0LjQ1MzIgMTk5LjU4OSAzNS43MTQyQzE5OS40NzUgMzYuOTc1OSAxOTkuMzc2IDM4LjE1MzMgMTk5LjI5MiAzOS4yNDcyQzE5OS4yOSAzOS4yNjkyIDE5OS4yODkgMzkuMjg5MSAxOTkuMjg3IDM5LjMxMTFDMTk5LjA0OCAzOS40MjE5IDE5OC43ODYgMzkuNTE5IDE5OC41MDMgMzkuNjAwNkMxOTguMjEzIDM5LjY4NDQgMTk3Ljg4NSAzOS43MzM5IDE5Ny41MTkgMzkuNzQ4OUMxOTcuNTggMzkuNDc1MSAxOTcuNjMgMzkuMTcxMiAxOTcuNjY4IDM4LjgzNjlDMTk3LjcwNiAzOC41MDI5IDE5Ny43MzcgMzguMTUzMyAxOTcuNzYgMzcuNzg4NEMxOTcuNzgyIDM3LjQyNDEgMTk3Ljc5IDM3LjA1OTEgMTk3Ljc4MiAzNi42OTQ1QzE5Ny43NzQgMzYuMzI5NiAxOTcuNzU1IDM1Ljk5NTYgMTk3LjcyNSAzNS42OTE0QzE5Ny42NDkgMzUuMDM4NSAxOTcuNTA4IDM0LjQxOTEgMTk3LjMwMiAzMy44MzM4QzE5Ny4wOTYgMzMuMjQ5MSAxOTYuODE4IDMyLjc1OTMgMTk2LjQ2NyAzMi4zNjM3QzE5Ni4xMTYgMzEuOTY4NyAxOTUuNjc4IDMxLjcwMjcgMTk1LjE1MSAzMS41NjYyQzE5NC42MjYgMzEuNDI5NCAxOTQuMDEyIDMxLjQ3NDggMTkzLjMxIDMxLjcwMjdDMTkyLjI3MyAzMS41NjYyIDE5MS4zMzkgMzEuNjYxMyAxOTAuNTA4IDMxLjk4NzhDMTg5LjY3NyAzMi4zMTQ5IDE4OC45NTYgMzIuNzg5NCAxODguMzQ2IDMzLjQxMjJDMTg3LjczNiAzNC4wMzU3IDE4Ny4yMzcgMzQuNzY4NCAxODYuODQ4IDM1LjYxMTlDMTg2LjQ1OSAzNi40NTUxIDE4Ni4yIDM3LjMyMTQgMTg2LjA3IDM4LjIxQzE4Ni4wMTUgMzguNTg2OCAxODUuOTg4IDM4Ljk2MTggMTg1Ljk4IDM5LjMzNkMxODUuNzQ0IDM5LjgxNzcgMTg1LjQ4NiA0MC4yMzg4IDE4NS4yMDEgNDAuNTkyMUMxODQuNzk3IDQxLjA5MzUgMTg0LjM3NyA0MS41MDM4IDE4My45NDMgNDEuODIyOEMxODMuNTA4IDQyLjE0MiAxODMuMDc3IDQyLjM4NTIgMTgyLjY1IDQyLjU1MjNDMTgyLjIyMyA0Mi43MTk4IDE4MS44NDIgNDIuODMzNyAxODEuNTA3IDQyLjg5NDFDMTgxLjExIDQyLjk3MDIgMTgwLjcyOSA0Mi45NzggMTgwLjM2MyA0Mi45MTdDMTc5Ljk5NyA0Mi44NTY1IDE3OS42NjEgNDIuNjgxNiAxNzkuMzU3IDQyLjM5MjdDMTc5LjExMiA0Mi4xODAyIDE3OC45MjUgNDEuODM4MSAxNzguNzk2IDQxLjM2NzFDMTc4LjY2NiA0MC44OTYgMTc4LjU5IDQwLjM2MDggMTc4LjU2NyAzOS43NjAyQzE3OC41NDQgMzkuMTU5OSAxNzguNTY3IDM4LjUzMyAxNzguNjM2IDM3Ljg3OThDMTc4LjcwNSAzNy4yMjY2IDE3OC44MjIgMzYuNjA3MiAxNzguOTkgMzYuMDIyMkMxNzkuMTU4IDM1LjQzNzIgMTc5LjM3MSAzNC45MTMgMTc5LjYzMSAzNC40NDkyQzE3OS44OSAzMy45ODYyIDE4MC4xOTUgMzMuNjU1NCAxODAuNTQ2IDMzLjQ1NzlDMTgwLjc0NCAzMy40ODg2IDE4MC44NjYgMzMuNjA2IDE4MC45MTIgMzMuODExQzE4MC45NTggMzQuMDE2MyAxODAuOTY5IDM0LjI1OTUgMTgwLjk0NiAzNC41NDA1QzE4MC45MjMgMzQuODIxOSAxODAuODg5IDM1LjExMDUgMTgwLjg0MyAzNS40MDY2QzE4MC43OTcgMzUuNzAzIDE4MC43NzUgMzUuOTUwMiAxODAuNzc1IDM2LjE0NzRDMTgwLjg1MSAzNi41NTc3IDE4MC45OTkgMzYuODc3IDE4MS4yMjEgMzcuMTA0OEMxODEuNDQxIDM3LjMzMjcgMTgxLjY5IDM3LjQ2NiAxODEuOTY0IDM3LjUwMzZDMTgyLjIzOSAzNy41NDE3IDE4Mi41MDkgMzcuNDc3MyAxODIuNzc2IDM3LjMwOThDMTgzLjA0MyAzNy4xNDMgMTgzLjI2IDM2Ljg3NyAxODMuNDI4IDM2LjUxMkMxODMuNDQzIDM2LjUyNzQgMTgzLjQ2NiAzNi41MzQ5IDE4My40OTcgMzYuNTM0OUwxODMuODE3IDMzLjY0MDRDMTgzLjkwOSAzMy4yNDUxIDE4My44NDcgMzIuODk1OCAxODMuNjM0IDMyLjU5MTlDMTgzLjQyIDMyLjI4OCAxODMuMTM4IDMyLjExMyAxODIuNzg4IDMyLjA2NzZDMTgyLjM0NSAzMS40Mjk0IDE4MS43NDcgMzEuMDkxNCAxODAuOTkyIDMxLjA1MzJDMTgwLjIzNyAzMS4wMTU0IDE3OS40NjMgMzEuMjYyMyAxNzguNjcgMzEuNzk0MUMxNzguMTgyIDMyLjE0NCAxNzcuNzUxIDMyLjYyNiAxNzcuMzc4IDMzLjI0MTNDMTc3LjAwNCAzMy44NTcgMTc2LjY5OSAzNC41NDA1IDE3Ni40NjMgMzUuMjkyNkMxNzYuMjI2IDM2LjA0NDggMTc2LjA1OCAzNi44MzkxIDE3NS45NTkgMzcuNjc0OEMxNzUuODYgMzguNTEwNCAxNzUuODQxIDM5LjMyMzYgMTc1LjkwMiA0MC4xMTMzQzE3NS45NjMgNDAuOTAzOCAxNzYuMTA0IDQxLjY0ODQgMTc2LjMyNSA0Mi4zNDdDMTc2LjU0NiA0My4wNDYyIDE3Ni44NTUgNDMuNjMxMiAxNzcuMjUyIDQ0LjEwMkMxNzcuNTg3IDQ0LjUxMjMgMTc3Ljk2OCA0NC44MTI3IDE3OC4zOTUgNDUuMDAyN0MxNzguODIyIDQ1LjE5MjcgMTc5LjI2OCA0NS4zMTAxIDE3OS43MzQgNDUuMzU1OEMxODAuMTk5IDQ1LjQwMTIgMTgwLjY2IDQ1LjM4MjEgMTgxLjExOCA0NS4yOTg4QzE4MS41NzUgNDUuMjE1NSAxODIuMDEgNDUuMDk3OCAxODIuNDIxIDQ0Ljk0NTRDMTgyLjk1NSA0NC43NDgyIDE4My41MDUgNDQuNDk3MiAxODQuMDY5IDQ0LjE5MzNDMTg0LjYzMyA0My44ODk3IDE4NS4xNzQgNDMuNTI0OCAxODUuNjkzIDQzLjA5OTFDMTg1Ljk2NiA0Mi44NzUzIDE4Ni4yMjggNDIuNjMxMyAxODYuNDgyIDQyLjM2OTZDMTg2LjU5OCA0Mi42NTUzIDE4Ni43MjcgNDIuOTMxNyAxODYuODgyIDQzLjE5MDVDMTg3LjI5NCA0My44NzQxIDE4Ny44NSA0NC40MjkgMTg4LjU1MiA0NC44NTQ0QzE4OS4yNTMgNDUuMjc5NyAxOTAuMTE1IDQ1LjQ4NDQgMTkxLjEzNyA0NS40Njk3QzE5Mi4yMzUgNDUuNDU0NCAxOTMuMjQ5IDQ1LjE3NzQgMTk0LjE4IDQ0LjYzNzhDMTk1LjExIDQ0LjA5ODggMTk1Ljg3MiA0My4zMDQyIDE5Ni40NjcgNDIuMjU2QzE5Ny4zNTggNDIuMjU2IDE5OC4yMzQgNDIuMTA5NiAxOTkuMDk2IDQxLjgxOUMxOTkuMDg5IDQxLjkxMSAxOTkuMDgxIDQyLjAwNzkgMTk5LjA3NSA0Mi4wOTY2QzE5OS4wMTQgNDIuOTAxOSAxOTguOTgzIDQzLjQ0ODcgMTk4Ljk4MyA0My43Mzc2QzE5OC45NjggNDQuMjM5IDE5OC45MzQgNDQuODU4MSAxOTguODggNDUuNTk0OUMxOTguODI3IDQ2LjMzMiAxOTguNzkzIDQ3LjEwNjkgMTk4Ljc3OCA0Ny45MTk4QzE5OC43NjMgNDguNzMyNiAxOTguNzkzIDQ5LjU1MzIgMTk4Ljg2OSA1MC4zODE3QzE5OC45NDUgNTEuMjA5NiAxOTkuMTA1IDUxLjk2MiAxOTkuMzQ5IDUyLjYzODNDMTk5LjU5MyA1My4zMTQxIDE5OS45NCA1My44ODc4IDIwMC4zOSA1NC4zNTkxQzIwMC44NCA1NC44Mjk5IDIwMS40MzEgNTUuMTExMiAyMDIuMTYzIDU1LjIwMjNDMjAyLjk0MSA1NS4zMDg0IDIwMy42MTIgNTUuMTcxNyAyMDQuMTc2IDU0Ljc5MkMyMDQuNzQgNTQuNDEyIDIwNS4xOTggNTMuODkxOCAyMDUuNTQ5IDUzLjIzMDhDMjA1Ljg5OSA1Mi41Njk1IDIwNi4xNDcgNTEuODA2MSAyMDYuMjkyIDUwLjk0MDFDMjA2LjQzNyA1MC4wNzQgMjA2LjQ3OSA0OS4yMDM5IDIwNi40MTggNDguMzMwMUMyMDYuMzU3IDQ3LjQ1NjIgMjA2LjE5NiA0Ni42MzIxIDIwNS45MzcgNDUuODU3NUMyMDUuNjc4IDQ1LjA4MjIgMjA1LjMxOSA0NC40NDQgMjA0Ljg2MiA0My45NDIzQzIwNS4xMzcgNDMuODY2OSAyMDUuNDY1IDQzLjcyMjYgMjA1Ljg0NiA0My41MDk1QzIwNi4yMjcgNDMuMjk2OSAyMDYuNjIgNDMuMDU3NSAyMDcuMDI0IDQyLjc5MTVDMjA3LjEyMyA0Mi43MjYxIDIwNy4yMjEgNDIuNjU3MyAyMDcuMzIgNDIuNTkwMkMyMDcuMjgzIDQzLjEyODYgMjA3LjI2NCA0My41MTI2IDIwNy4yNjQgNDMuNzM3NkMyMDcuMjQ5IDQ0LjIzOSAyMDcuMjE1IDQ0Ljg1ODEgMjA3LjE2MSA0NS41OTQ5QzIwNy4xMDggNDYuMzMyIDIwNy4wNzMgNDcuMTA2OSAyMDcuMDU4IDQ3LjkxOThDMjA3LjA0MyA0OC43MzI2IDIwNy4wNzMgNDkuNTUzMiAyMDcuMTUgNTAuMzgxN0MyMDcuMjI2IDUxLjIwOTYgMjA3LjM4NiA1MS45NjIgMjA3LjYzIDUyLjYzODNDMjA3Ljg3NCA1My4zMTQxIDIwOC4yMjEgNTMuODg3OCAyMDguNjcxIDU0LjM1OTFDMjA5LjEyMSA1NC44Mjk5IDIwOS43MTIgNTUuMTExMiAyMTAuNDQ0IDU1LjIwMjNDMjExLjIyMSA1NS4zMDg0IDIxMS44OTIgNTUuMTcxNyAyMTIuNDU3IDU0Ljc5MkMyMTMuMDIxIDU0LjQxMiAyMTMuNDc4IDUzLjg5MTggMjEzLjgzIDUzLjIzMDhDMjE0LjE4IDUyLjU2OTUgMjE0LjQyOCA1MS44MDYxIDIxNC41NzMgNTAuOTQwMUMyMTQuNzE4IDUwLjA3NCAyMTQuNzU5IDQ5LjIwMzkgMjE0LjY5OSA0OC4zMzAxQzIxNC42MzcgNDcuNDU2MiAyMTQuNDc3IDQ2LjYzMjEgMjE0LjIxOCA0NS44NTc1QzIxMy45NTkgNDUuMDgyMiAyMTMuNjAxIDQ0LjQ0NCAyMTMuMTQzIDQzLjk0MjNDMjEzLjQxOCA0My44NjY5IDIxMy43NDUgNDMuNzIyNiAyMTQuMTI3IDQzLjUwOTVDMjE0LjUwOCA0My4yOTY5IDIxNC45IDQzLjA1NzUgMjE1LjMwNSA0Mi43OTE1QzIxNS41MTUgNDIuNjUzMyAyMTUuNzI0IDQyLjUxMDcgMjE1LjkzMiA0Mi4zNjQxQzIxNi4wMSA0My4xMDcyIDIxNi4xNzkgNDMuNzU5IDIxNi40NDggNDQuMzA3M0MyMTYuNzc2IDQ0Ljk3NjEgMjE3LjIyMiA0NS40OTI1IDIxNy43ODcgNDUuODU3NUMyMTguMzUxIDQ2LjIyMTggMjE5LjAxNCA0Ni40MjM0IDIxOS43NzcgNDYuNDYxMkMyMjAuNTM5IDQ2LjQ5ODggMjIxLjM3IDQ2LjM1ODYgMjIyLjI3MSA0Ni4wMzkzQzIyMi45NDEgNDUuNzk2NSAyMjMuNTI1IDQ1LjQ5MjUgMjI0LjAyIDQ1LjEyNzlDMjI0LjUxNiA0NC43NjMgMjI0Ljk2MiA0NC4zMTg1IDIyNS4zNTggNDMuNzk0NkMyMjUuMzgxIDQzLjc2NDIgMjI1LjQwMyA0My43MzEzIDIyNS40MjUgNDMuNzAwNkMyMjUuNDk2IDQzLjkxMzQgMjI1LjU3NCA0NC4xMTc5IDIyNS42NjcgNDQuMzA3M0MyMjUuOTk1IDQ0Ljk3NjEgMjI2LjQ0MSA0NS40OTI1IDIyNy4wMDYgNDUuODU3NUMyMjcuNTY5IDQ2LjIyMTggMjI4LjIzMyA0Ni40MjM0IDIyOC45OTYgNDYuNDYxMkMyMjkuNzU4IDQ2LjQ5ODggMjMwLjU4OSA0Ni4zNTg2IDIzMS40ODkgNDYuMDM5M0MyMzIuMTYgNDUuNzk2NSAyMzIuNzQ0IDQ1LjQ5MjUgMjMzLjIzOSA0NS4xMjc5QzIzMy43MzUgNDQuNzYzIDIzNC4xODEgNDQuMzE4NSAyMzQuNTc3IDQzLjc5NDZDMjM0Ljk3NCA0My4yNyAyMzUuMzM2IDQyLjY2NiAyMzUuNjY0IDQxLjk4MjRDMjM1Ljk5MiA0MS4yOTg1IDIzNi4zMjMgNDAuNTE2NCAyMzYuNjU5IDM5LjYzNDdDMjM2LjcyIDM5LjM5MTggMjM2LjY2MyAzOS4xNzUyIDIzNi40ODggMzguOTg1MlpcIiBmaWxsPVwiIzBEMEMyM1wiLz5cclxuPC9zdmc+YDsiXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBLHNCQUFpRjtBQUVqRixpQ0FBMEMsdUJBQU87QUFBQSxFQUl6QyxTQUFTO0FBQUE7QUFFYixZQUFNLEtBQUs7QUFFWCxXQUFLLGNBQWMsSUFBSSxrQkFBa0IsS0FBSyxLQUFLO0FBRW5ELFdBQUs7QUFJTCxVQUFJLFFBQVEsT0FBTyxXQUFXO0FBRTlCLFVBQUksb0JBQW9CLE1BQU07QUFDNUIsWUFBSSxNQUFNLFdBQVcsS0FBSyxTQUFTLGdCQUFnQjtBQUNqRCxrQkFBUSxJQUFJO0FBQ1osZUFBSztBQUFBLG1CQUNJLEtBQUssU0FBUyxnQkFBZ0I7QUFDdkMsa0JBQVEsSUFBSTtBQUNaLGVBQUs7QUFBQTtBQUFBO0FBSVQsWUFBTSxpQkFBaUIsVUFBVTtBQUdqQyxXQUFLLFNBQVMsTUFBTSxNQUFNLG9CQUFvQixVQUFVO0FBRXhEO0FBR0EsVUFBSSxpQkFBaUIsTUFBTTtBQUV6QixjQUFNLFdBQVcsS0FBSyxJQUFJLE1BQU0sVUFBVTtBQUMxQyxhQUFLLFNBQVMsYUFBYTtBQUczQixZQUFJLEtBQUssSUFBSSxNQUFNLFVBQVUsZ0JBQWdCO0FBQzNDLGVBQUssU0FBUyxVQUFVO0FBQ3hCLGVBQUssU0FBUyxLQUFLO0FBQ25CLGtCQUFRLElBQUk7QUFBQSxlQUNQO0FBQ0wsZUFBSyxTQUFTLFVBQVU7QUFDeEIsZUFBSyxTQUFTLEtBQUs7QUFDbkIsa0JBQVEsSUFBSTtBQUFBO0FBRWQsaUJBQVMsS0FBSyxVQUFVLE9BQU8sbUJBQW1CLEtBQUss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