/* 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-catppuccin-light", name: "Switch light color scheme to Catppuccin (light)", callback: () => { this.settings.lightScheme = "minimal-catppuccin-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-catppuccin-dark", name: "Switch dark color scheme to Catppuccin (dark)", callback: () => { this.settings.darkScheme = "minimal-catppuccin-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-catppuccin-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-catppuccin-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-catppuccin-light", "Catppuccin").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-catppuccin-dark", "Catppuccin").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+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtYXRvbS1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtY2F0cHB1Y2Npbi1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIENhdHBwdWNjaW4gKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRlZmF1bHQtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBkZWZhdWx0IChsaWdodCknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MubGlnaHRTY2hlbWUgPSAnbWluaW1hbC1kZWZhdWx0LWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ncnV2Ym94LWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gR3J1dmJveCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtZ3J1dmJveC1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIEV2ZXJmb3Jlc3QgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLWV2ZXJmb3Jlc3QtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLW1hY29zLWxpZ2h0JyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gbWFjT1MgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLW1hY29zLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ub3Rpb24tbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBOb3Rpb24gKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLW5vdGlvbi1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbm9yZC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIE5vcmQgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLW5vcmQtbGlnaHQnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFNjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLXNvbGFyaXplZC1saWdodCcsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggbGlnaHQgY29sb3Igc2NoZW1lIHRvIFNvbGFyaXplZCAobGlnaHQpJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lID0gJ21pbmltYWwtc29sYXJpemVkLWxpZ2h0JztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlTGlnaHRTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC10aGluZ3MtbGlnaHQnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGxpZ2h0IGNvbG9yIHNjaGVtZSB0byBUaGluZ3MgKGxpZ2h0KScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSA9ICdtaW5pbWFsLXRoaW5ncy1saWdodCc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtYXRvbS1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBjb2xvciBzY2hlbWUgdG8gQXRvbSAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWF0b20tZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWNhdHBwdWNjaW4tZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggZGFyayBjb2xvciBzY2hlbWUgdG8gQ2F0cHB1Y2NpbiAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLWNhdHBwdWNjaW4tZGFyayc7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTY2hlbWUoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3RvZ2dsZS1taW5pbWFsLWRyYWN1bGEtZGFyaycsXHJcbiAgICAgIG5hbWU6ICdTd2l0Y2ggY29sb3Igc2NoZW1lIHRvIERyYWN1bGEgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1kcmFjdWxhLWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1kZWZhdWx0LWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIGRlZmF1bHQgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1kZWZhdWx0LWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ncnV2Ym94LWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIEdydXZib3ggKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ncnV2Ym94LWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1ldmVyZm9yZXN0LWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIEV2ZXJmb3Jlc3QgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1ldmVyZm9yZXN0LWRhcmsnO1xyXG4gICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICd0b2dnbGUtbWluaW1hbC1tYWNvcy1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBsaWdodCBjb2xvciBzY2hlbWUgdG8gbWFjT1MgKGRhcmspJyxcclxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNldHRpbmdzLmRhcmtTY2hlbWUgPSAnbWluaW1hbC1tYWNvcy1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbm9yZC1kYXJrJyxcclxuICAgICAgbmFtZTogJ1N3aXRjaCBkYXJrIGNvbG9yIHNjaGVtZSB0byBOb3JkIChkYXJrKScsXHJcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lID0gJ21pbmltYWwtbm9yZC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtbm90aW9uLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIE5vdGlvbiAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLW5vdGlvbi1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtc29sYXJpemVkLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIFNvbGFyaXplZCAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLXNvbGFyaXplZC1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtdGhpbmdzLWRhcmsnLFxyXG4gICAgICBuYW1lOiAnU3dpdGNoIGRhcmsgY29sb3Igc2NoZW1lIHRvIFRoaW5ncyAoZGFyayknLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya1NjaGVtZSA9ICdtaW5pbWFsLXRoaW5ncy1kYXJrJztcclxuICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1NjaGVtZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRGFya1N0eWxlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgIGlkOiAndG9nZ2xlLW1pbmltYWwtZGV2LWJsb2NrLXdpZHRoJyxcclxuICAgICAgbmFtZTogJ0RldiBcdTIwMTQgU2hvdyBibG9jayB3aWR0aHMnLFxyXG4gICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3MuZGV2QmxvY2tXaWR0aCA9ICF0aGlzLnNldHRpbmdzLmRldkJsb2NrV2lkdGg7XHJcbiAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoKClcclxuICB9XHJcblxyXG4gIG9udW5sb2FkKCkge1xyXG4gICAgY29uc29sZS5sb2coJ1VubG9hZGluZyBNaW5pbWFsIFRoZW1lIFNldHRpbmdzIHBsdWdpbicpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZFNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcclxuICAgIGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgfVxyXG5cclxuICAvLyByZWZyZXNoIGZ1bmN0aW9uIGZvciB3aGVuIHdlIGNoYW5nZSBzZXR0aW5nc1xyXG4gIHJlZnJlc2goKSB7XHJcbiAgICAvLyByZS1sb2FkIHRoZSBzdHlsZVxyXG4gICAgdGhpcy51cGRhdGVTdHlsZSgpXHJcbiAgfVxyXG5cclxuICAvLyBhZGQgdGhlIHN0eWxpbmcgZWxlbWVudHMgd2UgbmVlZFxyXG4gIGFkZFN0eWxlKCkge1xyXG4gICAgLy8gYWRkIGEgY3NzIGJsb2NrIGZvciBvdXIgc2V0dGluZ3MtZGVwZW5kZW50IHN0eWxlc1xyXG4gICAgY29uc3QgY3NzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIGNzcy5pZCA9ICdtaW5pbWFsLXRoZW1lJztcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChjc3MpO1xyXG5cclxuICAgIC8vIGFkZCB0aGUgbWFpbiBjbGFzc1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdtaW5pbWFsLXRoZW1lJyk7XHJcblxyXG4gICAgLy8gdXBkYXRlIHRoZSBzdHlsZSB3aXRoIHRoZSBzZXR0aW5ncy1kZXBlbmRlbnQgc3R5bGVzXHJcbiAgICB0aGlzLnVwZGF0ZVN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRGb250U2l6ZSgpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnZhdWx0LnNldENvbmZpZygnYmFzZUZvbnRTaXplJywgdGhpcy5zZXR0aW5ncy50ZXh0Tm9ybWFsKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnVwZGF0ZUZvbnRTaXplKCk7XHJcbiAgfVxyXG5cclxuICAvLyB1cGRhdGUgdGhlIHN0eWxlcyAoYXQgdGhlIHN0YXJ0LCBvciBhcyB0aGUgcmVzdWx0IG9mIGEgc2V0dGluZ3MgY2hhbmdlKVxyXG4gIHVwZGF0ZVN0eWxlKCkge1xyXG4gICAgdGhpcy5yZW1vdmVTdHlsZSgpO1xyXG5cclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFNjaGVtZSk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdib3JkZXJzLW5vbmUnLCAhdGhpcy5zZXR0aW5ncy5ib3JkZXJzVG9nZ2xlKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnY29sb3JmdWwtaGVhZGluZ3MnLCB0aGlzLnNldHRpbmdzLmNvbG9yZnVsSGVhZGluZ3MpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdjb2xvcmZ1bC1mcmFtZScsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxGcmFtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2NvbG9yZnVsLWFjdGl2ZScsIHRoaXMuc2V0dGluZ3MuY29sb3JmdWxBY3RpdmVTdGF0ZXMpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdtaW5pbWFsLWZvY3VzLW1vZGUnLCB0aGlzLnNldHRpbmdzLmZvY3VzTW9kZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2xpbmtzLWludC1vbicsIHRoaXMuc2V0dGluZ3MudW5kZXJsaW5lSW50ZXJuYWwpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdsaW5rcy1leHQtb24nLCB0aGlzLnNldHRpbmdzLnVuZGVybGluZUV4dGVybmFsKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnc3lzdGVtLXNoYWRlJywgdGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Z1bGwtd2lkdGgtbWVkaWEnLCB0aGlzLnNldHRpbmdzLmZ1bGxXaWR0aE1lZGlhKTtcclxuICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnaW1nLWdyaWQnLCB0aGlzLnNldHRpbmdzLmltZ0dyaWQpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdtaW5pbWFsLWRldi1ibG9jay13aWR0aCcsIHRoaXMuc2V0dGluZ3MuZGV2QmxvY2tXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtc3RhdHVzLW9mZicsICF0aGlzLnNldHRpbmdzLm1pbmltYWxTdGF0dXMpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdmdWxsLWZpbGUtbmFtZXMnLCAhdGhpcy5zZXR0aW5ncy50cmltTmFtZXMpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdsYWJlbGVkLW5hdicsIHRoaXMuc2V0dGluZ3MubGFiZWxlZE5hdik7XHJcbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ21pbmltYWwtZm9sZGluZycsIHRoaXMuc2V0dGluZ3MuZm9sZGluZyk7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcygndGFibGUtd2lkZScsJ3RhYmxlLW1heCcsJ3RhYmxlLTEwMCcsJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLFxyXG4gICAgICAnaWZyYW1lLXdpZGUnLCdpZnJhbWUtbWF4JywnaWZyYW1lLTEwMCcsJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJyxcclxuICAgICAgJ2ltZy13aWRlJywnaW1nLW1heCcsJ2ltZy0xMDAnLCdpbWctZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdjaGFydC13aWRlJywnY2hhcnQtbWF4JywnY2hhcnQtMTAwJywnY2hhcnQtZGVmYXVsdC13aWR0aCcsXHJcbiAgICAgICdtYXAtd2lkZScsJ21hcC1tYXgnLCdtYXAtMTAwJywnbWFwLWRlZmF1bHQtd2lkdGgnKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5jaGFydFdpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy50YWJsZVdpZHRoKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5pbWdXaWR0aCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuaWZyYW1lV2lkdGgpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLm1hcFdpZHRoKTtcclxuXHJcbiAgICAvLyBnZXQgdGhlIGN1c3RvbSBjc3MgZWxlbWVudFxyXG4gICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWluaW1hbC10aGVtZScpO1xyXG4gICAgaWYgKCFlbCkgdGhyb3cgXCJtaW5pbWFsLXRoZW1lIGVsZW1lbnQgbm90IGZvdW5kIVwiO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIHNldCB0aGUgc2V0dGluZ3MtZGVwZW5kZW50IGNzc1xyXG4gICAgICBlbC5pbm5lclRleHQgPSBcclxuICAgICAgICAnYm9keS5taW5pbWFsLXRoZW1leydcclxuICAgICAgICArICctLWZvbnQtdWktc21hbGw6JyArIHRoaXMuc2V0dGluZ3MudGV4dFNtYWxsICsgJ3B4OydcclxuICAgICAgICArICctLWxpbmUtaGVpZ2h0OicgKyB0aGlzLnNldHRpbmdzLmxpbmVIZWlnaHQgKyAnOydcclxuICAgICAgICArICctLWxpbmUtd2lkdGg6JyArIHRoaXMuc2V0dGluZ3MubGluZVdpZHRoICsgJ3JlbTsnXHJcbiAgICAgICAgKyAnLS1saW5lLXdpZHRoLXdpZGU6JyArIHRoaXMuc2V0dGluZ3MubGluZVdpZHRoV2lkZSArICdyZW07J1xyXG4gICAgICAgICsgJy0tbWF4LXdpZHRoOicgKyB0aGlzLnNldHRpbmdzLm1heFdpZHRoICsgJyU7J1xyXG4gICAgICAgICsgJy0tZm9udC1lZGl0b3Itb3ZlcnJpZGU6JyArIHRoaXMuc2V0dGluZ3MuZWRpdG9yRm9udCArICc7JztcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICByZWZyZXNoU3lzdGVtVGhlbWUoKSB7XHJcbiAgICBjb25zdCBpc0RhcmtNb2RlID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzXHJcblxyXG4gICAgaWYgKGlzRGFya01vZGUgJiYgdGhpcy5zZXR0aW5ncy51c2VTeXN0ZW1UaGVtZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdEYXJrIG1vZGUgYWN0aXZlJyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEYXJrU3R5bGUoKVxyXG5cclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0xpZ2h0IG1vZGUgYWN0aXZlJyk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVMaWdodFN0eWxlKClcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGFya1N0eWxlKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcyhcclxuICAgICAgJ3RoZW1lLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWRhcmstdG9uYWwnLFxyXG4gICAgICAnbWluaW1hbC1kYXJrLWJsYWNrJ1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5kYXJrU3R5bGUpO1xyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuYXBwLnNldFRoZW1lKCdvYnNpZGlhbicpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAudmF1bHQuc2V0Q29uZmlnKCd0aGVtZScsICdvYnNpZGlhbicpO1xyXG4gICAgdGhpcy5hcHAud29ya3NwYWNlLnRyaWdnZXIoJ2Nzcy1jaGFuZ2UnKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxpZ2h0U3R5bGUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAndGhlbWUtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtbGlnaHQtdG9uYWwnLFxyXG4gICAgICAnbWluaW1hbC1saWdodC1jb250cmFzdCcsXHJcbiAgICAgICdtaW5pbWFsLWxpZ2h0LXdoaXRlJ1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5saWdodFN0eWxlKTtcclxuXHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC5zZXRUaGVtZSgnbW9vbnN0b25lJyk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgJ21vb25zdG9uZScpO1xyXG4gICAgdGhpcy5hcHAud29ya3NwYWNlLnRyaWdnZXIoJ2Nzcy1jaGFuZ2UnKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURhcmtTY2hlbWUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKFxyXG4gICAgICAnbWluaW1hbC1hdG9tLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1jYXRwcHVjY2luLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1kZWZhdWx0LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1kcmFjdWxhLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ldmVyZm9yZXN0LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1ncnV2Ym94LWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1tYWNvcy1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbm9yZC1kYXJrJyxcclxuICAgICAgJ21pbmltYWwtbm90aW9uLWRhcmsnLFxyXG4gICAgICAnbWluaW1hbC1zb2xhcml6ZWQtZGFyaycsXHJcbiAgICAgICdtaW5pbWFsLXRoaW5ncy1kYXJrJ1xyXG4gICAgKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5kYXJrU2NoZW1lKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUxpZ2h0U2NoZW1lKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDbGFzcyhcclxuICAgICAgJ21pbmltYWwtYXRvbS1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1kZWZhdWx0LWxpZ2h0JyxcclxuICAgICAgJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLWdydXZib3gtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1tYWNvcy1saWdodCcsXHJcbiAgICAgICdtaW5pbWFsLW5vcmQtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1ub3Rpb24tbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC1zb2xhcml6ZWQtbGlnaHQnLFxyXG4gICAgICAnbWluaW1hbC10aGluZ3MtbGlnaHQnXHJcbiAgICApO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmxpZ2h0U2NoZW1lKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVRoZW1lKCkge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5hcHAuc2V0VGhlbWUodGhpcy5zZXR0aW5ncy50aGVtZSk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmFwcC52YXVsdC5zZXRDb25maWcoJ3RoZW1lJywgdGhpcy5zZXR0aW5ncy50aGVtZSk7XHJcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2UudHJpZ2dlcignY3NzLWNoYW5nZScpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU3R5bGUoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNsYXNzKCdtaW5pbWFsLWxpZ2h0JywnbWluaW1hbC1saWdodC10b25hbCcsJ21pbmltYWwtbGlnaHQtY29udHJhc3QnLCdtaW5pbWFsLWxpZ2h0LXdoaXRlJywnbWluaW1hbC1kYXJrJywnbWluaW1hbC1kYXJrLXRvbmFsJywnbWluaW1hbC1kYXJrLWJsYWNrJyk7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFkZENsYXNzKHRoaXMuc2V0dGluZ3MubGlnaHRTdHlsZSx0aGlzLnNldHRpbmdzLmRhcmtTdHlsZSk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIE1pbmltYWxTZXR0aW5ncyB7XHJcbiAgdGhlbWU6IHN0cmluZztcclxuICBsaWdodFN0eWxlOiBzdHJpbmc7XHJcbiAgZGFya1N0eWxlOiBzdHJpbmc7XHJcbiAgbGlnaHRTY2hlbWU6IHN0cmluZztcclxuICBkYXJrU2NoZW1lOiBzdHJpbmc7XHJcbiAgZWRpdG9yRm9udDogc3RyaW5nO1xyXG4gIGNvbG9yZnVsSGVhZGluZ3M6IGJvb2xlYW47XHJcbiAgY29sb3JmdWxGcmFtZTogYm9vbGVhbjtcclxuICBjb2xvcmZ1bEFjdGl2ZVN0YXRlczogYm9vbGVhbixcclxuICB0cmltTmFtZXM6IGJvb2xlYW47XHJcbiAgbGFiZWxlZE5hdjogYm9vbGVhbjtcclxuICBib3JkZXJzVG9nZ2xlOiBib29sZWFuO1xyXG4gIGZvY3VzTW9kZTogYm9vbGVhbjtcclxuICBsaW5lSGVpZ2h0OiBudW1iZXI7XHJcbiAgbGluZVdpZHRoOiBudW1iZXI7XHJcbiAgbGluZVdpZHRoV2lkZTogbnVtYmVyO1xyXG4gIG1heFdpZHRoOiBudW1iZXI7XHJcbiAgaW1nR3JpZDogYm9vbGVhbjtcclxuICBkZXZCbG9ja1dpZHRoOiBib29sZWFuO1xyXG4gIHRhYmxlV2lkdGg6IHN0cmluZztcclxuICBpZnJhbWVXaWR0aDogc3RyaW5nO1xyXG4gIGltZ1dpZHRoOiBzdHJpbmc7XHJcbiAgY2hhcnRXaWR0aDogc3RyaW5nO1xyXG4gIG1hcFdpZHRoOiBzdHJpbmc7XHJcbiAgZnVsbFdpZHRoTWVkaWE6IGJvb2xlYW4sXHJcbiAgbWluaW1hbFN0YXR1czogYm9vbGVhbixcclxuICB0ZXh0Tm9ybWFsOiBudW1iZXI7XHJcbiAgdGV4dFNtYWxsOiBudW1iZXI7XHJcbiAgdW5kZXJsaW5lSW50ZXJuYWw6IGJvb2xlYW47XHJcbiAgdW5kZXJsaW5lRXh0ZXJuYWw6IGJvb2xlYW47XHJcbiAgdXNlU3lzdGVtVGhlbWU6IGJvb2xlYW47XHJcbiAgZm9sZGluZzogYm9vbGVhbjtcclxuICBsaW5lTnVtYmVyczogYm9vbGVhbjtcclxuICByZWFkYWJsZUxpbmVMZW5ndGg6IGJvb2xlYW47XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IE1pbmltYWxTZXR0aW5ncyA9IHtcclxuICB0aGVtZTogJ21vb25zdG9uZScsXHJcbiAgbGlnaHRTdHlsZTogJ21pbmltYWwtbGlnaHQnLFxyXG4gIGRhcmtTdHlsZTogJ21pbmltYWwtZGFyaycsXHJcbiAgbGlnaHRTY2hlbWU6ICdtaW5pbWFsLWRlZmF1bHQtbGlnaHQnLFxyXG4gIGRhcmtTY2hlbWU6ICdtaW5pbWFsLWRlZmF1bHQtZGFyaycsXHJcbiAgZWRpdG9yRm9udDogJycsXHJcbiAgbGluZUhlaWdodDogMS41LFxyXG4gIGxpbmVXaWR0aDogNDAsXHJcbiAgbGluZVdpZHRoV2lkZTogNTAsXHJcbiAgbWF4V2lkdGg6IDg4LFxyXG4gIHRleHROb3JtYWw6IDE2LFxyXG4gIHRleHRTbWFsbDogMTMsXHJcbiAgaW1nR3JpZDogZmFsc2UsXHJcbiAgaW1nV2lkdGg6ICdpbWctZGVmYXVsdC13aWR0aCcsXHJcbiAgdGFibGVXaWR0aDogJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLFxyXG4gIGlmcmFtZVdpZHRoOiAnaWZyYW1lLWRlZmF1bHQtd2lkdGgnLFxyXG4gIG1hcFdpZHRoOiAnbWFwLWRlZmF1bHQtd2lkdGgnLFxyXG4gIGNoYXJ0V2lkdGg6ICdjaGFydC1kZWZhdWx0LXdpZHRoJyxcclxuICBjb2xvcmZ1bEhlYWRpbmdzOiBmYWxzZSxcclxuICBjb2xvcmZ1bEZyYW1lOiBmYWxzZSxcclxuICBjb2xvcmZ1bEFjdGl2ZVN0YXRlczogZmFsc2UsXHJcbiAgdHJpbU5hbWVzOiB0cnVlLFxyXG4gIGxhYmVsZWROYXY6IGZhbHNlLFxyXG4gIGZ1bGxXaWR0aE1lZGlhOiB0cnVlLFxyXG4gIGJvcmRlcnNUb2dnbGU6IHRydWUsXHJcbiAgbWluaW1hbFN0YXR1czogdHJ1ZSxcclxuICBmb2N1c01vZGU6IGZhbHNlLFxyXG4gIHVuZGVybGluZUludGVybmFsOiB0cnVlLFxyXG4gIHVuZGVybGluZUV4dGVybmFsOiB0cnVlLFxyXG4gIHVzZVN5c3RlbVRoZW1lOiBmYWxzZSxcclxuICBmb2xkaW5nOiB0cnVlLFxyXG4gIGxpbmVOdW1iZXJzOiBmYWxzZSxcclxuICByZWFkYWJsZUxpbmVMZW5ndGg6IGZhbHNlLFxyXG4gIGRldkJsb2NrV2lkdGg6IGZhbHNlLFxyXG59XHJcblxyXG5jbGFzcyBNaW5pbWFsU2V0dGluZ1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xyXG5cclxuXHJcbiAgcGx1Z2luOiBNaW5pbWFsVGhlbWU7XHJcbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogTWluaW1hbFRoZW1lKSB7XHJcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XHJcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICB9XHJcblxyXG4gIGRpc3BsYXkoKTogdm9pZCB7XHJcbiAgICBsZXQge2NvbnRhaW5lckVsfSA9IHRoaXM7XHJcblxyXG4gICAgY29udGFpbmVyRWwuZW1wdHkoKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnTWluaW1hbCBUaGVtZSBTZXR0aW5ncyd9KTtcclxuXHJcbiAgICBjb25zdCBtYWluRGVzYyA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJyk7XHJcblxyXG4gICAgICBtYWluRGVzYy5hcHBlbmRUZXh0KCdOZWVkIGhlbHA/IEV4cGxvcmUgdGhlICcpO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRDaGlsZChcclxuICAgICAgICBjcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgIHRleHQ6IFwiTWluaW1hbCBkb2N1bWVudGF0aW9uXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vbWluaW1hbC5ndWlkZVwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZFRleHQoJyBvciB2aXNpdCB0aGUgJyk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzdHJvbmcnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIiNtaW5pbWFsXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgbWFpbkRlc2MuYXBwZW5kVGV4dCgnIGNoYW5uZWwgaW4gdGhlIG9mZmljaWFsIE9ic2lkaWFuIERpc2NvcmQuIFlvdSBjYW4gc3VwcG9ydCBjb250aW51ZWQgZGV2ZWxvcG1lbnQgYnkgJyk7XHJcbiAgICAgIG1haW5EZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJidXlpbmcgbWUgYSBjb2ZmZWVcIixcclxuICAgICAgICAgIGhyZWY6IFwiaHR0cHM6Ly93d3cuYnV5bWVhY29mZmVlLmNvbS9rZXBhbm9cIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBtYWluRGVzYy5hcHBlbmRUZXh0KCcgXHUyNjE1Jyk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ0NvbG9yIHNjaGVtZSd9KTtcclxuXHJcbiAgICBjb25zdCBjb2xvckRlc2MgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcpO1xyXG5cclxuICAgICAgY29sb3JEZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ1RvIGNyZWF0ZSBhIGNvbXBsZXRlbHkgY3VzdG9tIGNvbG9yIHNjaGVtZSB1c2UgJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBjb2xvckRlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIlN0eWxlIFNldHRpbmdzIHBsdWdpblwiLFxyXG4gICAgICAgICAgaHJlZjogXCJvYnNpZGlhbjovL3Nob3ctcGx1Z2luP2lkPW9ic2lkaWFuLXN0eWxlLXNldHRpbmdzXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgICAgY29sb3JEZXNjLmFwcGVuZFRleHQoJy4nKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdMaWdodCBtb2RlIGNvbG9yIHNjaGVtZScpXHJcbiAgICAgICAgLnNldERlc2MoJ1ByZXNldCBjb2xvciBvcHRpb25zIGZvciBsaWdodCBtb2RlJylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGVmYXVsdC1saWdodCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1hdG9tLWxpZ2h0JywnQXRvbScpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWNhdHBwdWNjaW4tbGlnaHQnLCdDYXRwcHVjY2luJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZXZlcmZvcmVzdC1saWdodCcsJ0V2ZXJmb3Jlc3QnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ncnV2Ym94LWxpZ2h0JywnR3J1dmJveCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW1hY29zLWxpZ2h0JywnbWFjT1MnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3JkLWxpZ2h0JywnTm9yZCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vdGlvbi1saWdodCcsJ05vdGlvbicpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXNvbGFyaXplZC1saWdodCcsJ1NvbGFyaXplZCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXRoaW5ncy1saWdodCcsJ1RoaW5ncycpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubGlnaHRTY2hlbWUpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGlnaHRTY2hlbWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZUxpZ2h0U2NoZW1lKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ0xpZ2h0IG1vZGUgYmFja2dyb3VuZCBjb250cmFzdCcpXHJcbiAgICAgICAgLnNldERlc2MoJ0xldmVsIG9mIGNvbnRyYXN0IGJldHdlZW4gc2lkZWJhciBhbmQgbWFpbiBjb250ZW50JylcclxuICAgICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbGlnaHQnLCdEZWZhdWx0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtbGlnaHQtd2hpdGUnLCdBbGwgd2hpdGUnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1saWdodC10b25hbCcsJ0xvdyBjb250cmFzdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWxpZ2h0LWNvbnRyYXN0JywnSGlnaCBjb250cmFzdCcpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubGlnaHRTdHlsZSlcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saWdodFN0eWxlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi51cGRhdGVMaWdodFN0eWxlKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgLnNldE5hbWUoJ0RhcmsgbW9kZSBjb2xvciBzY2hlbWUnKVxyXG4gICAgICAgIC5zZXREZXNjKCdQcmVzZXQgY29sb3JzIG9wdGlvbnMgZm9yIGRhcmsgbW9kZScpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRlZmF1bHQtZGFyaycsJ0RlZmF1bHQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1hdG9tLWRhcmsnLCdBdG9tJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtY2F0cHB1Y2Npbi1kYXJrJywnQ2F0cHB1Y2NpbicpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRyYWN1bGEtZGFyaycsJ0RyYWN1bGEnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ldmVyZm9yZXN0LWRhcmsnLCdFdmVyZm9yZXN0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZ3J1dmJveC1kYXJrJywnR3J1dmJveCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW1hY29zLWRhcmsnLCdtYWNPUycpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLW5vcmQtZGFyaycsJ05vcmQnKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbignbWluaW1hbC1ub3Rpb24tZGFyaycsJ05vdGlvbicpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLXNvbGFyaXplZC1kYXJrJywnU29sYXJpemVkJylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtdGhpbmdzLWRhcmsnLCdUaGluZ3MnKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTY2hlbWUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTY2hlbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi51cGRhdGVEYXJrU2NoZW1lKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAuc2V0TmFtZSgnRGFyayBtb2RlIGJhY2tncm91bmQgY29udHJhc3QnKVxyXG4gICAgICAgIC5zZXREZXNjKCdMZXZlbCBvZiBjb250cmFzdCBiZXR3ZWVuIHNpZGViYXIgYW5kIG1haW4gY29udGVudCcpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKGRyb3Bkb3duID0+IGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRhcmsnLCdEZWZhdWx0JylcclxuICAgICAgICAgIC5hZGRPcHRpb24oJ21pbmltYWwtZGFyay10b25hbCcsJ0xvdyBjb250cmFzdCcpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKCdtaW5pbWFsLWRhcmstYmxhY2snLCdUcnVlIGJsYWNrJylcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5kYXJrU3R5bGUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRhcmtTdHlsZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnVwZGF0ZURhcmtTdHlsZSgpO1xyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdicicpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ0ZlYXR1cmVzJ30pO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWF0Y2ggc3lzdGVtIHNldHRpbmcgZm9yIGxpZ2h0IG9yIGRhcmsgbW9kZScpXHJcbiAgICAgIC5zZXREZXNjKCdBdXRvbWF0aWNhbGx5IHN3aXRjaCBiYXNlZCBvbiB5b3VyIE9TIHNldHRpbmcnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudXNlU3lzdGVtVGhlbWUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZVN5c3RlbVRoZW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaFN5c3RlbVRoZW1lKCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVGV4dCBsYWJlbHMgZm9yIHByaW1hcnkgbmF2aWdhdGlvbicpXHJcbiAgICAgIC5zZXREZXNjKCdOYXZpZ2F0aW9uIGluIGxlZnQgc2lkZWJhciB1c2VzIHRleHQgbGFiZWxzIChzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbG9jYWxpemF0aW9uIHN1cHBvcnQpJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmxhYmVsZWROYXYpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxhYmVsZWROYXYgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDb2xvcmZ1bCB3aW5kb3cgZnJhbWUnKVxyXG4gICAgICAuc2V0RGVzYygnVGhlIHRvcCBhcmVhIG9mIHRoZSBhcHAgdXNlcyB5b3VyIGFjY2VudCBjb2xvcicpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEZyYW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NvbG9yZnVsIGFjdGl2ZSBzdGF0ZXMnKVxyXG4gICAgICAuc2V0RGVzYygnQWN0aXZlIGZpbGUgYW5kIG1lbnUgaXRlbXMgdXNlIHlvdXIgYWNjZW50IGNvbG9yJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbG9yZnVsQWN0aXZlU3RhdGVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEFjdGl2ZVN0YXRlcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdDb2xvcmZ1bCBoZWFkaW5ncycpXHJcbiAgICAgIC5zZXREZXNjKCdIZWFkaW5ncyB1c2UgYSBkaWZmZXJlbnQgY29sb3IgZm9yIGVhY2ggc2l6ZScpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb2xvcmZ1bEhlYWRpbmdzID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01pbmltYWwgc3RhdHVzIGJhcicpXHJcbiAgICAgIC5zZXREZXNjKCdVc2UgbmFycm93IHN0YXR1cyBiYXInKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWluaW1hbFN0YXR1cylcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWluaW1hbFN0YXR1cyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RyaW0gZmlsZSBuYW1lcyBpbiBzaWRlYmFycycpXHJcbiAgICAgIC5zZXREZXNjKCdVc2UgZWxsaXBzZXMgdG8gZml0IGZpbGUgbmFtZXMgb24gYSBzaW5nbGUgbGluZScpXHJcbiAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50cmltTmFtZXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRyaW1OYW1lcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgIC5zZXROYW1lKCdXb3Jrc3BhY2UgYm9yZGVycycpXHJcbiAgICAgICAgLnNldERlc2MoJ0Rpc3BsYXkgZGl2aWRlciBsaW5lcyBiZXR3ZWVuIHdvcmtzcGFjZSBlbGVtZW50cycpXHJcbiAgICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmJvcmRlcnNUb2dnbGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdGb2N1cyBtb2RlJylcclxuICAgICAgLnNldERlc2MoJ0hpZGUgdGFiIGJhciBhbmQgc3RhdHVzIGJhciwgaG92ZXIgdG8gZGlzcGxheSAoY2FuIGJlIHRvZ2dsZWQgd2l0aCBob3RrZXkpJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmZvY3VzTW9kZSlcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZm9jdXNNb2RlID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1VuZGVybGluZSBpbnRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5zZXREZXNjKCdTaG93IHVuZGVybGluZXMgb24gaW50ZXJuYWwgbGlua3MnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lSW50ZXJuYWwpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUludGVybmFsID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1VuZGVybGluZSBleHRlcm5hbCBsaW5rcycpXHJcbiAgICAgIC5zZXREZXNjKCdTaG93IHVuZGVybGluZXMgb24gZXh0ZXJuYWwgbGlua3MnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MudW5kZXJsaW5lRXh0ZXJuYWwpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnVuZGVybGluZUV4dGVybmFsID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ01heGltaXplIG1lZGlhJylcclxuICAgICAgLnNldERlc2MoJ0ltYWdlcyBhbmQgdmlkZW9zIGZpbGwgdGhlIHdpZHRoIG9mIHRoZSBsaW5lJylcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmZ1bGxXaWR0aE1lZGlhKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5mdWxsV2lkdGhNZWRpYSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnYnInKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycpO1xyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdMYXlvdXQnfSk7XHJcblxyXG4gICAgY29uc3QgbGF5b3V0RGVzYyA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJyk7XHJcblxyXG4gICAgICBsYXlvdXREZXNjLmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ1RoZSBmb2xsb3dpbmcgb3B0aW9ucyByZXF1aXJlIHRoZSAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcIkNvbnRleHR1YWwgVHlwb2dyYXBoeSBwbHVnaW5cIixcclxuICAgICAgICAgIGhyZWY6IFwib2JzaWRpYW46Ly9zaG93LXBsdWdpbj9pZD1vYnNpZGlhbi1jb250ZXh0dWFsLXR5cG9ncmFwaHlcIixcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgICBsYXlvdXREZXNjLmFwcGVuZFRleHQoJy4gVGhlc2Ugb3B0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIG9uIGEgcGVyLWZpbGUgYmFzaXMgdXNpbmcgWUFNTCwgJyk7XHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcInNlZSBkb2N1bWVudGF0aW9uXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vbWluaW1hbC5ndWlkZS9GZWF0dXJlcy9CbG9jayt3aWR0aFwiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGxheW91dERlc2MuYXBwZW5kVGV4dCgnIGZvciBkZXRhaWxzLicpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnSW1hZ2UgZ3JpZHMnKVxyXG4gICAgICAuc2V0RGVzYygnVHVybiBjb25zZWN1dGl2ZSBpbWFnZXMgaW50byBjb2x1bW5zIFx1MjAxNCB0byBtYWtlIGEgbmV3IHJvdywgYWRkIGFuIGV4dHJhIGxpbmUgYnJlYWsgYmV0d2VlbiBpbWFnZXMnKVxyXG4gICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nR3JpZClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nR3JpZCA9IHZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0NoYXJ0IHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIGNoYXJ0IGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdjaGFydC1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2NoYXJ0LTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNoYXJ0V2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNoYXJ0V2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdJZnJhbWUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgaWZyYW1lIGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS1kZWZhdWx0LXdpZHRoJywnRGVmYXVsdCcpXHJcbiAgICAgICAgLmFkZE9wdGlvbignaWZyYW1lLXdpZGUnLCdXaWRlIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2lmcmFtZS0xMDAnLCcxMDAlIHBhbmUgd2lkdGgnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZnJhbWVXaWR0aClcclxuICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuaWZyYW1lV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdJbWFnZSB3aWR0aCcpXHJcbiAgICAgIC5zZXREZXNjKCdEZWZhdWx0IHdpZHRoIGZvciBpbWFnZSBibG9ja3MnKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ2ltZy13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdpbWctMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuaW1nV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmltZ1dpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTWFwIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ0RlZmF1bHQgd2lkdGggZm9yIG1hcCBibG9ja3MnKVxyXG4gICAgICAuYWRkRHJvcGRvd24oZHJvcGRvd24gPT4gZHJvcGRvd25cclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtZGVmYXVsdC13aWR0aCcsJ0RlZmF1bHQnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ21hcC13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtbWF4JywnTWF4aW11bSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCdtYXAtMTAwJywnMTAwJSBwYW5lIHdpZHRoJylcclxuICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MubWFwV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm1hcFdpZHRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnVGFibGUgd2lkdGgnKVxyXG4gICAgICAuc2V0RGVzYygnRGVmYXVsdCB3aWR0aCBmb3IgdGFibGUgYW5kIERhdGF2aWV3IGJsb2NrcycpXHJcbiAgICAgIC5hZGREcm9wZG93bihkcm9wZG93biA9PiBkcm9wZG93blxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLWRlZmF1bHQtd2lkdGgnLCdEZWZhdWx0JylcclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS13aWRlJywnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgICAuYWRkT3B0aW9uKCd0YWJsZS1tYXgnLCdNYXhpbXVtIGxpbmUgd2lkdGgnKVxyXG4gICAgICAgIC5hZGRPcHRpb24oJ3RhYmxlLTEwMCcsJzEwMCUgcGFuZSB3aWR0aCcpXHJcbiAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnRhYmxlV2lkdGgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRhYmxlV2lkdGggPSB2YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnKTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnVHlwb2dyYXBoeSd9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ1RleHQgZm9udCBzaXplJylcclxuICAgICAgLnNldERlc2MoJ1VzZWQgZm9yIHRoZSBtYWluIHRleHQgKGRlZmF1bHQgMTYpJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCcxNicpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy50ZXh0Tm9ybWFsIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHROb3JtYWwgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldEZvbnRTaXplKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnU21hbGwgZm9udCBzaXplJylcclxuICAgICAgLnNldERlc2MoJ1VzZWQgZm9yIHRleHQgaW4gdGhlIHNpZGViYXJzIGFuZCB0YWJzIChkZWZhdWx0IDEzKScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignMTMnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MudGV4dFNtYWxsIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnRleHRTbWFsbCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ0xpbmUgaGVpZ2h0JylcclxuICAgICAgLnNldERlc2MoJ0xpbmUgaGVpZ2h0IG9mIHRleHQgKGRlZmF1bHQgMS41KScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignMS41JylcclxuICAgICAgICAuc2V0VmFsdWUoKHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVIZWlnaHQgfHwgJycpICsgJycpXHJcbiAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZUhlaWdodCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEodGhpcy5wbHVnaW4uc2V0dGluZ3MpO1xyXG4gICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUoJ05vcm1hbCBsaW5lIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ051bWJlciBvZiBjaGFyYWN0ZXJzIHBlciBsaW5lIChkZWZhdWx0IDQwKScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignNDAnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoIHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmxpbmVXaWR0aCA9IHBhcnNlSW50KHZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnV2lkZSBsaW5lIHdpZHRoJylcclxuICAgICAgLnNldERlc2MoJ051bWJlciBvZiBjaGFyYWN0ZXJzIHBlciBsaW5lIGZvciB3aWRlIGVsZW1lbnRzIChkZWZhdWx0IDUwKScpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dC5zZXRQbGFjZWhvbGRlcignNTAnKVxyXG4gICAgICAgIC5zZXRWYWx1ZSgodGhpcy5wbHVnaW4uc2V0dGluZ3MubGluZVdpZHRoV2lkZSB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5saW5lV2lkdGhXaWRlID0gcGFyc2VJbnQodmFsdWUudHJpbSgpKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdNYXhpbXVtIGxpbmUgd2lkdGggJScpXHJcbiAgICAgIC5zZXREZXNjKCdQZXJjZW50YWdlIG9mIHNwYWNlIGluc2lkZSBhIHBhbmUgdGhhdCBhIGxpbmUgY2FuIGZpbGwgKGRlZmF1bHQgODgpJylcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0LnNldFBsYWNlaG9sZGVyKCc4OCcpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXhXaWR0aCB8fCAnJykgKyAnJylcclxuICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXhXaWR0aCA9IHBhcnNlSW50KHZhbHVlLnRyaW0oKSk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YSh0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdFZGl0b3IgZm9udCcpXHJcbiAgICAgIC5zZXREZXNjKCdPdmVycmlkZXMgdGhlIHRleHQgZm9udCBkZWZpbmVkIGluIE9ic2lkaWFuIEFwcGVhcmFuY2Ugc2V0dGluZ3Mgd2hlbiBpbiBlZGl0IG1vZGUnKVxyXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHQuc2V0UGxhY2Vob2xkZXIoJycpXHJcbiAgICAgICAgLnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5lZGl0b3JGb250IHx8ICcnKSArICcnKVxyXG4gICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmVkaXRvckZvbnQgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2JyJyk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ1N1cHBvcnQgZGV2ZWxvcG1lbnQnfSk7XHJcblxyXG4gICAgY29uc3QgZG9uYXRlVGV4dCA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJyk7XHJcblxyXG4gICAgICBkb25hdGVUZXh0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdzcGFuJywge1xyXG4gICAgICAgICAgdGV4dDogJ0lmIHlvdSBlbmpveSBNaW5pbWFsLCBjb25zaWRlciAnXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIGRvbmF0ZVRleHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ2EnLCB7XHJcbiAgICAgICAgICB0ZXh0OiBcImJ1eWluZyBtZSBhIGNvZmZlZVwiLFxyXG4gICAgICAgICAgaHJlZjogXCJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2tlcGFub1wiLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICAgIGRvbmF0ZVRleHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgY3JlYXRlRWwoJ3NwYW4nLCB7XHJcbiAgICAgICAgICB0ZXh0OiAnLCBhbmQgZm9sbG93aW5nIG1lIG9uIFR3aXR0ZXIgJ1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICBkb25hdGVUZXh0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgIGNyZWF0ZUVsKCdhJywge1xyXG4gICAgICAgICAgdGV4dDogXCJAa2VwYW5vXCIsXHJcbiAgICAgICAgICBocmVmOiBcImh0dHBzOi8vdHdpdHRlci5jb20va2VwYW5vXCIsXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuXHJcbiAgICBjb25zdCBkaXYgPSBjb250YWluZXJFbC5jcmVhdGVFbCgnZGl2Jywge1xyXG4gICAgICBjbHM6ICdtaW5pbWFsLWRvbmF0aW9uJyxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcclxuICAgIGRpdi5hcHBlbmRDaGlsZChcclxuICAgICAgY3JlYXRlRG9uYXRlQnV0dG9uKFxyXG4gICAgICAgICdodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL2tlcGFubycsXHJcbiAgICAgICAgcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhidXlNZUFDb2ZmZWUsICd0ZXh0L3htbCcpLmRvY3VtZW50RWxlbWVudCxcclxuICAgICAgKSxcclxuICAgICk7XHJcblxyXG5cclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IGNyZWF0ZURvbmF0ZUJ1dHRvbiA9IChsaW5rOiBzdHJpbmcsIGltZzogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCA9PiB7XHJcbiAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICBhLnNldEF0dHJpYnV0ZSgnaHJlZicsIGxpbmspO1xyXG4gIGEuYWRkQ2xhc3MoJ21pbmltYWwtZG9uYXRlLWJ1dHRvbicpO1xyXG4gIGEuYXBwZW5kQ2hpbGQoaW1nKTtcclxuICByZXR1cm4gYTtcclxufTtcclxuXHJcbmNvbnN0IGJ1eU1lQUNvZmZlZSA9IGBcclxuPHN2ZyB3aWR0aD1cIjE1MFwiIGhlaWdodD1cIjQyXCIgdmlld0JveD1cIjAgMCAyNjAgNzNcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDoxMHB4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbjxwYXRoIGQ9XCJNMCAxMS42OEMwIDUuMjI5MzIgNS4yMjkzMSAwIDExLjY4IDBIMjQ4LjJDMjU0LjY1MSAwIDI1OS44OCA1LjIyOTMxIDI1OS44OCAxMS42OFY2MS4zMkMyNTkuODggNjcuNzcwNyAyNTQuNjUxIDczIDI0OC4yIDczSDExLjY4QzUuMjI5MzEgNzMgMCA2Ny43NzA3IDAgNjEuMzJWMTEuNjhaXCIgZmlsbD1cIiNGRkREMDBcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuMjU2NiAyNC4wMDc4TDUyLjIyNDYgMjMuOTg4OUw1Mi4xNTA0IDIzLjk2NjNDNTIuMTgwMiAyMy45OTE1IDUyLjIxNzYgMjQuMDA2MSA1Mi4yNTY2IDI0LjAwNzhaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuNzI0OCAyNy4zNDU3TDUyLjY4OTUgMjcuMzU1Nkw1Mi43MjQ4IDI3LjM0NTdaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuMjcwMSAyNC4wMDI0QzUyLjI2NiAyNC4wMDE5IDUyLjI2MTkgMjQuMDAwOSA1Mi4yNTggMjMuOTk5NUM1Mi4yNTc4IDI0LjAwMjIgNTIuMjU3OCAyNC4wMDQ5IDUyLjI1OCAyNC4wMDc2QzUyLjI2MjQgMjQuMDA3IDUyLjI2NjYgMjQuMDA1MiA1Mi4yNzAxIDI0LjAwMjRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuMjU3OCAyNC4wMDk0SDUyLjI2NDNWMjQuMDA1NEw1Mi4yNTc4IDI0LjAwOTRaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGQ9XCJNNTIuNjk3MyAyNy4zMzk0TDUyLjc1MTMgMjcuMzA4Nkw1Mi43NzE0IDI3LjI5NzNMNTIuNzg5NyAyNy4yNzc4QzUyLjc1NTQgMjcuMjkyNiA1Mi43MjQxIDI3LjMxMzUgNTIuNjk3MyAyNy4zMzk0WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTUyLjM0ODQgMjQuMDgxMkw1Mi4yOTU2IDI0LjAzMUw1Mi4yNTk4IDI0LjAxMTVDNTIuMjc5IDI0LjA0NTQgNTIuMzEwOCAyNC4wNzA1IDUyLjM0ODQgMjQuMDgxMlpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk0zOS4wNjg0IDU2LjQ2OUMzOS4wMjYyIDU2LjQ4NzIgMzguOTg5MyA1Ni41MTU4IDM4Ljk2MDkgNTYuNTUyTDM4Ljk5NDMgNTYuNTMwNkMzOS4wMTY5IDU2LjUwOTggMzkuMDQ4OSA1Ni40ODUzIDM5LjA2ODQgNTYuNDY5WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTQ2Ljc4MDIgNTQuOTUxOEM0Ni43ODAyIDU0LjkwNDEgNDYuNzU2OSA1NC45MTI5IDQ2Ljc2MjYgNTUuMDgyNkM0Ni43NjI2IDU1LjA2ODcgNDYuNzY4MyA1NS4wNTQ5IDQ2Ljc3MDggNTUuMDQxN0M0Ni43NzM5IDU1LjAxMTUgNDYuNzc2NCA1NC45ODIgNDYuNzgwMiA1NC45NTE4WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTQ1Ljk4NDQgNTYuNDY5QzQ1Ljk0MjIgNTYuNDg3MiA0NS45MDUzIDU2LjUxNTggNDUuODc3IDU2LjU1Mkw0NS45MTAzIDU2LjUzMDZDNDUuOTMyOSA1Ni41MDk4IDQ1Ljk2NDkgNTYuNDg1MyA0NS45ODQ0IDU2LjQ2OVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk0zMy42MzA3IDU2LjgzMDFDMzMuNTk4NyA1Ni44MDIzIDMzLjU1OTUgNTYuNzg0IDMzLjUxNzYgNTYuNzc3M0MzMy41NTE1IDU2Ljc5MzcgMzMuNTg1NSA1Ni44MSAzMy42MDgxIDU2LjgyMjZMMzMuNjMwNyA1Ni44MzAxWlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTMyLjQxMTggNTUuNjU5OEMzMi40MDY4IDU1LjYxMDMgMzIuMzkxNiA1NS41NjI0IDMyLjM2NzIgNTUuNTE5QzMyLjM4NDUgNTUuNTY0MiAzMi4zOTkgNTUuNjEwNCAzMi40MTA2IDU1LjY1NzNMMzIuNDExOCA1NS42NTk4WlwiIGZpbGw9XCIjMEQwQzIyXCIvPlxyXG48cGF0aCBkPVwiTTQwLjYyMyAzNC43MjIxQzM4Ljk0NDkgMzUuNDQwNSAzNy4wNDA0IDM2LjI1NTEgMzQuNTcyMiAzNi4yNTUxQzMzLjUzOTcgMzYuMjUzMSAzMi41MTIyIDM2LjExMTQgMzEuNTE3NiAzNS44MzRMMzMuMjI0NyA1My4zNjA1QzMzLjI4NTEgNTQuMDkzIDMzLjYxODggNTQuNzc2MSAzNC4xNTk1IDU1LjI3MzlDMzQuNzAwMyA1NS43NzE4IDM1LjQwODUgNTYuMDQ4MiAzNi4xNDM1IDU2LjA0OEMzNi4xNDM1IDU2LjA0OCAzOC41NjQgNTYuMTczNyAzOS4zNzE2IDU2LjE3MzdDNDAuMjQwOSA1Ni4xNzM3IDQyLjg0NzQgNTYuMDQ4IDQyLjg0NzQgNTYuMDQ4QzQzLjU4MjMgNTYuMDQ4IDQ0LjI5MDQgNTUuNzcxNiA0NC44MzEgNTUuMjczN0M0NS4zNzE2IDU0Ljc3NTkgNDUuNzA1MiA1NC4wOTI5IDQ1Ljc2NTYgNTMuMzYwNUw0Ny41OTQgMzMuOTkzQzQ2Ljc3NjkgMzMuNzE0IDQ1Ljk1MjMgMzMuNTI4NiA0NS4wMjI3IDMzLjUyODZDNDMuNDE1IDMzLjUyNzkgNDIuMTE5NiAzNC4wODE3IDQwLjYyMyAzNC43MjIxWlwiIGZpbGw9XCJ3aGl0ZVwiLz5cclxuPHBhdGggZD1cIk0yNi4yMzQ0IDI3LjI0NDlMMjYuMjYzMyAyNy4yNzE5TDI2LjI4MjEgMjcuMjgzMkMyNi4yNjc2IDI3LjI2ODggMjYuMjUxNiAyNy4yNTU5IDI2LjIzNDQgMjcuMjQ0OVpcIiBmaWxsPVwiIzBEMEMyMlwiLz5cclxuPHBhdGggZD1cIk01NS40OTA2IDI1LjYyNzRMNTUuMjMzNiAyNC4zMzA3QzU1LjAwMjkgMjMuMTY3MyA1NC40NzkzIDIyLjA2OCA1My4yODUxIDIxLjY0NzVDNTIuOTAyNCAyMS41MTMgNTIuNDY4IDIxLjQ1NTIgNTIuMTc0NSAyMS4xNzY4QzUxLjg4MSAyMC44OTgzIDUxLjc5NDMgMjAuNDY1OSA1MS43MjY0IDIwLjA2NDlDNTEuNjAwNyAxOS4zMjg5IDUxLjQ4MjUgMTguNTkyMyA1MS4zNTM3IDE3Ljg1NzVDNTEuMjQyNCAxNy4yMjU5IDUxLjE1NDQgMTYuNTE2MyA1MC44NjQ3IDE1LjkzNjhDNTAuNDg3NiAxNS4xNTg2IDQ5LjcwNSAxNC43MDM2IDQ4LjkyNjkgMTQuNDAyNUM0OC41MjgyIDE0LjI1MzcgNDguMTIxMyAxNC4xMjc4IDQ3LjcwODIgMTQuMDI1NEM0NS43NjQyIDEzLjUxMjUgNDMuNzIwMiAxMy4zMjQgNDEuNzIwMiAxMy4yMTY1QzM5LjMxOTcgMTMuMDg0IDM2LjkxMjggMTMuMTIzOSAzNC41MTggMTMuMzM1OUMzMi43MzU1IDEzLjQ5ODEgMzAuODU4MSAxMy42OTQyIDI5LjE2NDIgMTQuMzEwOEMyOC41NDUxIDE0LjUzNjQgMjcuOTA3MSAxNC44MDczIDI3LjQzNjQgMTUuMjg1NkMyNi44NTg3IDE1Ljg3MzMgMjYuNjcwMiAxNi43ODIxIDI3LjA5MTkgMTcuNTE1QzI3LjM5MTcgMTguMDM1NCAyNy44OTk2IDE4LjQwMzEgMjguNDM4MiAxOC42NDYzQzI5LjEzOTggMTguOTU5NyAyOS44NzI2IDE5LjE5ODIgMzAuNjI0MiAxOS4zNTc4QzMyLjcxNzIgMTkuODIwNCAzNC44ODUgMjAuMDAyMSAzNy4wMjMzIDIwLjA3OTRDMzkuMzkzMiAyMC4xNzUgNDEuNzY3IDIwLjA5NzUgNDQuMTI1NiAxOS44NDc0QzQ0LjcwODkgMTkuNzgzMyA0NS4yOTExIDE5LjcwNjQgNDUuODcyMyAxOS42MTY4QzQ2LjU1NjggMTkuNTExOCA0Ni45OTYxIDE4LjYxNjggNDYuNzk0MyAxNy45OTMzQzQ2LjU1MyAxNy4yNDc5IDQ1LjkwNDQgMTYuOTU4NyA0NS4xNzA5IDE3LjA3MTJDNDUuMDYyOCAxNy4wODgyIDQ0Ljk1NTMgMTcuMTAzOSA0NC44NDcyIDE3LjExOTZMNDQuNzY5MiAxNy4xMzFDNDQuNTIwOCAxNy4xNjI0IDQ0LjI3MjMgMTcuMTkxNyA0NC4wMjM4IDE3LjIxOUM0My41MTA1IDE3LjI3NDMgNDIuOTk1OSAxNy4zMTk1IDQyLjQ4MDEgMTcuMzU0N0M0MS4zMjQ5IDE3LjQzNTIgNDAuMTY2NSAxNy40NzIyIDM5LjAwODggMTcuNDc0MUMzNy44NzEyIDE3LjQ3NDEgMzYuNzMyOSAxNy40NDIxIDM1LjU5NzggMTcuMzY3M0MzNS4wNzk5IDE3LjMzMzMgMzQuNTYzMiAxNy4yOTAyIDM0LjA0NzggMTcuMjM3OEMzMy44MTM0IDE3LjIxMzMgMzMuNTc5NiAxNy4xODc1IDMzLjM0NTggMTcuMTU4NkwzMy4xMjMzIDE3LjEzMDNMMzMuMDc0OSAxNy4xMjM0TDMyLjg0NDIgMTcuMDkwMUMzMi4zNzI4IDE3LjAxOTEgMzEuOTAxNCAxNi45Mzc0IDMxLjQzNSAxNi44Mzg3QzMxLjM4OCAxNi44MjgzIDMxLjM0NTkgMTYuODAyMSAzMS4zMTU3IDE2Ljc2NDVDMzEuMjg1NiAxNi43MjY5IDMxLjI2OTEgMTYuNjgwMSAzMS4yNjkxIDE2LjYzMTlDMzEuMjY5MSAxNi41ODM3IDMxLjI4NTYgMTYuNTM2OSAzMS4zMTU3IDE2LjQ5OTNDMzEuMzQ1OSAxNi40NjE3IDMxLjM4OCAxNi40MzU2IDMxLjQzNSAxNi40MjUxSDMxLjQ0MzhDMzEuODQ4IDE2LjMzOSAzMi4yNTUzIDE2LjI2NTUgMzIuNjYzOCAxNi4yMDE0QzMyLjggMTYuMTggMzIuOTM2NiAxNi4xNTkgMzMuMDczNiAxNi4xMzg1SDMzLjA3NzRDMzMuMzMzMiAxNi4xMjE1IDMzLjU5MDMgMTYuMDc1NyAzMy44NDQ4IDE2LjA0NTVDMzYuMDU5NSAxNS44MTUxIDM4LjI4NzQgMTUuNzM2NiA0MC41MTI4IDE1LjgxMDRDNDEuNTkzMyAxNS44NDE5IDQyLjY3MzEgMTUuOTA1MyA0My43NDg1IDE2LjAxNDdDNDMuOTc5OCAxNi4wMzg2IDQ0LjIwOTggMTYuMDYzNyA0NC40Mzk5IDE2LjA5MkM0NC41Mjc5IDE2LjEwMjcgNDQuNjE2NSAxNi4xMTUzIDQ0LjcwNTEgMTYuMTI1OUw0NC44ODM2IDE2LjE1MTdDNDUuNDA0IDE2LjIyOTIgNDUuOTIxNyAxNi4zMjMzIDQ2LjQzNjcgMTYuNDMzOUM0Ny4xOTk3IDE2LjU5OTkgNDguMTc5NiAxNi42NTM5IDQ4LjUxOSAxNy40ODk4QzQ4LjYyNzEgMTcuNzU1MSA0OC42NzYxIDE4LjA0OTkgNDguNzM1OSAxOC4zMjgzTDQ4LjgxMTkgMTguNjgzNEM0OC44MTM5IDE4LjY4OTggNDguODE1NCAxOC42OTYzIDQ4LjgxNjMgMTguNzAyOUM0OC45OTYxIDE5LjU0MDkgNDkuMTc2IDIwLjM3OSA0OS4zNTYyIDIxLjIxN0M0OS4zNjk0IDIxLjI3ODkgNDkuMzY5NyAyMS4zNDI5IDQ5LjM1NzEgMjEuNDA0OUM0OS4zNDQ1IDIxLjQ2NjkgNDkuMzE5MyAyMS41MjU3IDQ5LjI4MjkgMjEuNTc3NkM0OS4yNDY2IDIxLjYyOTQgNDkuMiAyMS42NzMyIDQ5LjE0NiAyMS43MDYyQzQ5LjA5MiAyMS43MzkyIDQ5LjAzMTcgMjEuNzYwOCA0OC45NjkgMjEuNzY5NUg0OC45NjRMNDguODU0IDIxLjc4NDZMNDguNzQ1MyAyMS43OTlDNDguNDAwOSAyMS44NDM5IDQ4LjA1NiAyMS44ODU4IDQ3LjcxMDcgMjEuOTI0N0M0Ny4wMzA3IDIyLjAwMjIgNDYuMzQ5NiAyMi4wNjkzIDQ1LjY2NzQgMjIuMTI1OUM0NC4zMTE5IDIyLjIzODYgNDIuOTUzNiAyMi4zMTI1IDQxLjU5MjcgMjIuMzQ3N0M0MC44OTkyIDIyLjM2NjIgNDAuMjA1OSAyMi4zNzQ4IDM5LjUxMjkgMjIuMzczNUMzNi43NTQzIDIyLjM3MTMgMzMuOTk4MSAyMi4yMTEgMzEuMjU3OCAyMS44OTMzQzMwLjk2MTEgMjEuODU4MSAzMC42NjQ1IDIxLjgyMDQgMzAuMzY3OCAyMS43ODIxQzMwLjU5NzggMjEuODExNiAzMC4yMDA2IDIxLjc1OTQgMzAuMTIwMiAyMS43NDgxQzI5LjkzMTYgMjEuNzIxNyAyOS43NDMxIDIxLjY5NDMgMjkuNTU0NSAyMS42NjU4QzI4LjkyMTYgMjEuNTcwOSAyOC4yOTI0IDIxLjQ1NCAyNy42NjA3IDIxLjM1MTVDMjYuODk3MSAyMS4yMjU4IDI2LjE2NjcgMjEuMjg4NyAyNS40NzYgMjEuNjY1OEMyNC45MDkgMjEuOTc2IDI0LjQ1MDEgMjIuNDUxOCAyNC4xNjA1IDIzLjAyOTdDMjMuODYyNiAyMy42NDU2IDIzLjc3MzkgMjQuMzE2MyAyMy42NDA3IDI0Ljk3ODFDMjMuNTA3NCAyNS42Mzk5IDIzLjMgMjYuMzUyMSAyMy4zNzg2IDI3LjAzMTVDMjMuNTQ3NyAyOC40OTc5IDI0LjU3MjggMjkuNjg5NSAyNi4wNDczIDI5Ljk1NkMyNy40MzQ1IDMwLjIwNzQgMjguODI5MiAzMC40MTExIDMwLjIyNzYgMzAuNTg0NkMzNS43MjEyIDMxLjI1NzQgNDEuMjcxMSAzMS4zMzc5IDQ2Ljc4MTggMzAuODI0N0M0Ny4yMzA1IDMwLjc4MjggNDcuNjc4NyAzMC43MzcxIDQ4LjEyNjIgMzAuNjg3NkM0OC4yNjYgMzAuNjcyMyA0OC40MDc0IDMwLjY4ODQgNDguNTQwMSAzMC43MzQ4QzQ4LjY3MjkgMzAuNzgxMiA0OC43OTM2IDMwLjg1NjYgNDguODkzNCAzMC45NTU3QzQ4Ljk5MzIgMzEuMDU0OCA0OS4wNjk1IDMxLjE3NDkgNDkuMTE2OSAzMS4zMDczQzQ5LjE2NDIgMzEuNDM5NyA0OS4xODE0IDMxLjU4MTEgNDkuMTY3IDMxLjcyMDlMNDkuMDI3NSAzMy4wNzczQzQ4Ljc0NjMgMzUuODE4MSA0OC40NjUyIDM4LjU1ODcgNDguMTg0IDQxLjI5OUM0Ny44OTA3IDQ0LjE3NjkgNDcuNTk1NSA0Ny4wNTQ1IDQ3LjI5ODQgNDkuOTMxOUM0Ny4yMTQ2IDUwLjc0MjIgNDcuMTMwOCA1MS41NTI0IDQ3LjA0NyA1Mi4zNjI0QzQ2Ljk2NjYgNTMuMTYgNDYuOTU1MiA1My45ODI3IDQ2LjgwMzggNTQuNzcwOUM0Ni41NjQ5IDU2LjAxMDMgNDUuNzI1OCA1Ni43NzE1IDQ0LjUwMTUgNTcuMDQ5OUM0My4zNzk4IDU3LjMwNTIgNDIuMjMzOSA1Ny40MzkyIDQxLjA4MzYgNTcuNDQ5N0MzOS44MDgzIDU3LjQ1NjYgMzguNTMzNiA1Ny40IDM3LjI1ODMgNTcuNDA2OUMzNS44OTcgNTcuNDE0NSAzNC4yMjk1IDU3LjI4ODcgMzMuMTc4NiA1Ni4yNzU2QzMyLjI1NTMgNTUuMzg1NiAzMi4xMjc3IDUzLjk5MjEgMzIuMDAyIDUyLjc4NzJDMzEuODM0NCA1MS4xOTIgMzEuNjY4MiA0OS41OTcxIDMxLjUwMzYgNDguMDAyM0wzMC41Nzk2IDM5LjEzNDRMMjkuOTgxOSAzMy4zOTY2QzI5Ljk3MTggMzMuMzAxNyAyOS45NjE4IDMzLjIwOCAyOS45NTI0IDMzLjExMjVDMjkuODgwNyAzMi40MjggMjkuMzk2MSAzMS43NTggMjguNjMyNCAzMS43OTI2QzI3Ljk3ODggMzEuODIxNSAyNy4yMzU5IDMyLjM3NzEgMjcuMzEyNSAzMy4xMTI1TDI3Ljc1NTcgMzcuMzY2NEwyOC42NzIgNDYuMTY1N0MyOC45MzMxIDQ4LjY2NTIgMjkuMTkzNSA1MS4xNjUgMjkuNDUzMyA1My42NjUzQzI5LjUwMzYgNTQuMTQ0MiAyOS41NTA3IDU0LjYyNDQgMjkuNjAzNSA1NS4xMDM0QzI5Ljg5MDggNTcuNzIwNSAzMS44ODk1IDU5LjEzMSAzNC4zNjQ2IDU5LjUyODJDMzUuODEwMiA1OS43NjA3IDM3LjI5MSA1OS44MDg1IDM4Ljc1OCA1OS44MzI0QzQwLjYzODYgNTkuODYyNiA0Mi41MzggNTkuOTM0OCA0NC4zODc3IDU5LjU5NDJDNDcuMTI4NyA1OS4wOTE0IDQ5LjE4NTMgNTcuMjYxMSA0OS40Nzg4IDU0LjQyMkM0OS41NjI2IDUzLjYwMjQgNDkuNjQ2NCA1Mi43ODI2IDQ5LjczMDIgNTEuOTYyNkM1MC4wMDg4IDQ5LjI1MDcgNTAuMjg3MSA0Ni41Mzg2IDUwLjU2NDkgNDMuODI2M0w1MS40NzM3IDM0Ljk2NDFMNTEuODkwNCAzMC45MDI2QzUxLjkxMTIgMzAuNzAxMiA1MS45OTYyIDMwLjUxMTggNTIuMTMzIDMwLjM2MjVDNTIuMjY5NyAzMC4yMTMyIDUyLjQ1MDkgMzAuMTExOSA1Mi42NDk3IDMwLjA3MzZDNTMuNDMzNSAyOS45MjA4IDU0LjE4MjcgMjkuNjYgNTQuNzQwMiAyOS4wNjM1QzU1LjYyNzcgMjguMTEzOCA1NS44MDQzIDI2Ljg3NTYgNTUuNDkwNiAyNS42Mjc0Wk0yNi4wMDcxIDI2LjUwMzVDMjYuMDE5IDI2LjQ5NzkgMjUuOTk3IDI2LjYwMDMgMjUuOTg3NiAyNi42NDgxQzI1Ljk4NTcgMjYuNTc1OCAyNS45ODk1IDI2LjUxMTcgMjYuMDA3MSAyNi41MDM1Wk0yNi4wODMxIDI3LjA5MThDMjYuMDg5NCAyNy4wODc0IDI2LjEwODMgMjcuMTEyNiAyNi4xMjc4IDI3LjE0MjhDMjYuMDk4MiAyNy4xMTUxIDI2LjA3OTQgMjcuMDk0NCAyNi4wODI1IDI3LjA5MThIMjYuMDgzMVpNMjYuMTU3OSAyNy4xOTA1QzI2LjE4NSAyNy4yMzY0IDI2LjE5OTQgMjcuMjY1MyAyNi4xNTc5IDI3LjE5MDVWMjcuMTkwNVpNMjYuMzA4MiAyNy4zMTI1SDI2LjMxMTlDMjYuMzExOSAyNy4zMTY5IDI2LjMxODggMjcuMzIxMyAyNi4zMjE0IDI3LjMyNTdDMjYuMzE3MiAyNy4zMjA4IDI2LjMxMjYgMjcuMzE2NCAyNi4zMDc1IDI3LjMxMjVIMjYuMzA4MlpNNTIuNjEzMiAyNy4xMzAyQzUyLjMzMTcgMjcuMzk3OSA1MS45MDc0IDI3LjUyMjQgNTEuNDg4MiAyNy41ODQ2QzQ2Ljc4NjggMjguMjgyMyA0Mi4wMTY5IDI4LjYzNTUgMzcuMjY0IDI4LjQ3OTZDMzMuODYyNCAyOC4zNjMzIDMwLjQ5NjcgMjcuOTg1NiAyNy4xMjkgMjcuNTA5OEMyNi43OTkgMjcuNDYzMyAyNi40NDE0IDI3LjQwMyAyNi4yMTQ1IDI3LjE1OTdDMjUuNzg3MSAyNi43MDA5IDI1Ljk5NyAyNS43NzcgMjYuMTA4MyAyNS4yMjI2QzI2LjIxMDEgMjQuNzE0OCAyNi40MDUgMjQuMDM3OCAyNy4wMDkgMjMuOTY1NkMyNy45NTE4IDIzLjg1NDkgMjkuMDQ2NiAyNC4yNTI4IDI5Ljk3OTQgMjQuMzk0MkMzMS4xMDIzIDI0LjU2NTYgMzIuMjI5NSAyNC43MDI4IDMzLjM2MDkgMjQuODA1OUMzOC4xODkyIDI1LjI0NTkgNDMuMDk4NiAyNS4xNzc0IDQ3LjkwNTYgMjQuNTMzN0M0OC43ODE3IDI0LjQxNiA0OS42NTQ4IDI0LjI3OTIgNTAuNTI0NiAyNC4xMjMzQzUxLjI5OTYgMjMuOTg0NCA1Mi4xNTg4IDIzLjcyMzYgNTIuNjI3MSAyNC41MjYyQzUyLjk0ODIgMjUuMDczIDUyLjk5MSAyNS44MDQ2IDUyLjk0MTMgMjYuNDIyNUM1Mi45MjYgMjYuNjkxNyA1Mi44MDg0IDI2Ljk0NDggNTIuNjEyNiAyNy4xMzAySDUyLjYxMzJaXCIgZmlsbD1cIiMwRDBDMjJcIi8+XHJcbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04MS4xMzAyIDQwLjE5MjlDODAuODU1NiA0MC43MTY5IDgwLjQ3ODEgNDEuMTczMiA3OS45OTc4IDQxLjU2MDRDNzkuNTE3NSA0MS45NDc5IDc4Ljk1NzEgNDIuMjYzMyA3OC4zMTY2IDQyLjUwNjJDNzcuNjc2MSA0Mi43NDk3IDc3LjAzMTUgNDIuOTEzMSA3Ni4zODM1IDQyLjk5NjRDNzUuNzM1MiA0My4wNzk5IDc1LjEwNiA0My4wNzI3IDc0LjQ5NjMgNDIuOTczNUM3My44ODYzIDQyLjg3NDkgNzMuMzY3NCA0Mi42NzM3IDcyLjk0MDggNDIuMzY5NUw3My40MjE0IDM3LjM3NzlDNzMuODYzMyAzNy4yMjYxIDc0LjQxOTcgMzcuMDcwMyA3NS4wOTA5IDM2LjkxMDdDNzUuNzYxOSAzNi43NTEzIDc2LjQ1MiAzNi42MzcxIDc3LjE2MTMgMzYuNTY4OUM3Ny44NzA1IDM2LjUwMDMgNzguNTQxMiAzNi41MDg0IDc5LjE3NDQgMzYuNTkxN0M3OS44MDY4IDM2LjY3NTMgODAuMzA2NSAzNi44NzY1IDgwLjY3MjUgMzcuMTk1OEM4MC44NzA3IDM3LjM3OCA4MS4wMzg3IDM3LjU3NTQgODEuMTc2IDM3Ljc4ODNDODEuMzEzIDM4LjAwMTEgODEuMzk2OSAzOC4yMjE0IDgxLjQyNzYgMzguNDQ5M0M4MS41MDM3IDM5LjA4NzUgODEuNDA0NyAzOS42Njg3IDgxLjEzMDIgNDAuMTkyOVpNNzQuMTUzIDI5LjU2MDJDNzQuNDczNCAyOS4zNjI3IDc0Ljg1ODUgMjkuMTg3NyA3NS4zMDgzIDI5LjAzNTZDNzUuNzU4MSAyOC44ODQxIDc2LjIxOTUgMjguNzc3NCA3Ni42OTIzIDI4LjcxNjdDNzcuMTY0OCAyOC42NTYyIDc3LjYyNjIgMjguNjQ4MSA3OC4wNzYzIDI4LjY5MzhDNzguNTI1OCAyOC43Mzk1IDc4LjkyMjggMjguODY0NyA3OS4yNjU5IDI5LjA2OTdDNzkuNjA4OSAyOS4yNzUxIDc5Ljg2NDMgMjkuNTcxNCA4MC4wMzIgMjkuOTU4NkM4MC4xOTk3IDMwLjM0NjQgODAuMjQ1NiAzMC44MzY1IDgwLjE2OTMgMzEuNDI5QzgwLjEwODMgMzEuOTAwMSA3OS45MjExIDMyLjI5OTEgNzkuNjA4OSAzMi42MjU2Qzc5LjI5NjMgMzIuOTUyNiA3OC45MTQ3IDMzLjIyNTkgNzguNDY1MiAzMy40NDYyQzc4LjAxNTQgMzMuNjY2OCA3Ny41Mzg4IDMzLjg0MTUgNzcuMDM1NiAzMy45NzAyQzc2LjUzMjEgMzQuMDk5NyA3Ni4wNDc3IDM0LjE5NDkgNzUuNTgyOCAzNC4yNTUzQzc1LjExNzYgMzQuMzE2MyA3NC43MTM3IDM0LjM1NDUgNzQuMzcwNiAzNC4zNjkyQzc0LjAyNzMgMzQuMzg0NSA3My44MDIxIDM0LjM5MjEgNzMuNjk1NiAzNC4zOTIxTDc0LjE1MyAyOS41NjAyWk04My42MDA3IDM2Ljk2NzZDODMuMzU2NiAzNi40MzYxIDgzLjAyODcgMzUuOTY4OSA4Mi42MTcyIDM1LjU2NThDODIuMjA1NCAzNS4xNjMzIDgxLjcxNyAzNC44NzA5IDgxLjE1MzEgMzQuNjg4NUM4MS4zOTY5IDM0LjQ5MSA4MS42MzcxIDM0LjE3OTUgODEuODczNyAzMy43NTM5QzgyLjEwOTkgMzMuMzI4OCA4Mi4zMTE5IDMyLjg2NSA4Mi40Nzk2IDMyLjM2MzZDODIuNjQ3NCAzMS44NjE5IDgyLjc2MiAzMS4zNTcgODIuODIyOSAzMC44NDc4QzgyLjg4MzYgMzAuMzM4OSA4Mi44NjA3IDI5LjkwMiA4Mi43NTQ0IDI5LjUzN0M4Mi40OTQ3IDI4LjYyNTYgODIuMDg3IDI3LjkxMTQgODEuNTMwMyAyNy4zOTQ2QzgwLjk3MzQgMjYuODc4MiA4MC4zMjU3IDI2LjUyMTEgNzkuNTg2IDI2LjMyMzNDNzguODQ2MiAyNi4xMjY0IDc4LjAzMDQgMjYuMDg0MiA3Ny4xMzgzIDI2LjE5ODFDNzYuMjQ2MiAyNi4zMTIgNzUuMzM0NyAyNi41MzYxIDc0LjQwNDkgMjYuODcwNEM3NC40MDQ5IDI2Ljc5NDYgNzQuNDEyNCAyNi43MTQ4IDc0LjQyNzggMjYuNjMxMkM3NC40NDI2IDI2LjU0OCA3NC40NTA0IDI2LjQ2MDQgNzQuNDUwNCAyNi4zNjlDNzQuNDUwNCAyNi4xNDExIDc0LjMzNjEgMjUuOTQzOSA3NC4xMDc0IDI1Ljc3NjVDNzMuODc4NyAyNS42MDkzIDczLjYxNTUgMjUuNTEwNyA3My4zMTgzIDI1LjQ4MDFDNzMuMDIwOSAyNS40NSA3Mi43MzEgMjUuNTE0MiA3Mi40NDg5IDI1LjY3MzhDNzIuMTY2NSAyNS44MzM0IDcxLjk3MjEgMjYuMTI2NCA3MS44NjU2IDI2LjU1MTFDNzEuNzQzNCAyNy45MTg5IDcxLjYyMTUgMjkuMzM5OCA3MS40OTk2IDMwLjgxMzRDNzEuMzc3NCAzMi4yODc1IDcxLjI0OCAzMy43NzY3IDcxLjExMDcgMzUuMjgxMkM3MC45NzM1IDM2Ljc4NTUgNzAuODM2MiAzOC4yNzg0IDcwLjY5ODkgMzkuNzU5OEM3MC41NjE2IDQxLjI0MTQgNzAuNDI0NCA0Mi42NjU5IDcwLjI4NzEgNDQuMDMzM0M3MC4zMzMgNDQuNDQzNiA3MC40NDczIDQ0Ljc2MjkgNzAuNjMwNCA0NC45OTA3QzcwLjgxMzMgNDUuMjE4OSA3MS4wMjY4IDQ1LjM1NTYgNzEuMjcwOSA0NS40MDFDNzEuNTE0NyA0NS40NDY3IDcxLjc3MDQgNDUuNDA0NSA3Mi4wMzcxIDQ1LjI3NTVDNzIuMzAzOCA0NS4xNDY5IDcyLjUzNjUgNDQuOTIyMiA3Mi43MzUgNDQuNjAzMkM3My4zNDQ3IDQ0LjkzNzUgNzQuMDMxMSA0NS4xNTQxIDc0Ljc5MzggNDUuMjUzQzc1LjU1NjEgNDUuMzUxNiA3Ni4zMjk4IDQ1LjM1MTYgNzcuMTE1NyA0NS4yNTNDNzcuOTAwNyA0NS4xNTQxIDc4LjY3NDcgNDQuOTY4MiA3OS40Mzc0IDQ0LjY5NDNDODAuMTk5NyA0NC40MjExIDgwLjg5MzYgNDQuMDc5IDgxLjUxOSA0My42NjlDODIuMTQ0MSA0My4yNTg2IDgyLjY3MDMgNDIuNzkxMSA4My4wOTc1IDQyLjI2NzFDODMuNTI0NCA0MS43NDI2IDgzLjgwNjUgNDEuMTc2NyA4My45NDM3IDQwLjU2OTFDODQuMDgxIDM5Ljk0NiA4NC4xMTkgMzkuMzIzMSA4NC4wNTgxIDM4LjdDODMuOTk3MSAzOC4wNzcxIDgzLjg0NDUgMzcuNSA4My42MDA3IDM2Ljk2NzZaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XHJcbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMDUuOTE1IDQ5LjAwMTdDMTA1LjgzMiA0OS41MDMxIDEwNS43MTMgNTAuMDMxMSAxMDUuNTYxIDUwLjU4NkMxMDUuNDA4IDUxLjE0MDMgMTA1LjIyOSA1MS42NDU4IDEwNS4wMjMgNTIuMTAxOEMxMDQuODE4IDUyLjU1NzUgMTA0LjU4OSA1Mi45MjU2IDEwNC4zMzcgNTMuMjA3QzEwNC4wODUgNTMuNDg4IDEwMy44MTUgNTMuNjA2IDEwMy41MjUgNTMuNTYwNkMxMDMuMjk2IDUzLjUyOTcgMTAzLjE1MSA1My4zODU0IDEwMy4wOTEgNTMuMTI3NEMxMDMuMDI5IDUyLjg2ODYgMTAzLjAyOSA1Mi41NDk3IDEwMy4wOTEgNTIuMTdDMTAzLjE1MSA1MS43OTAxIDEwMy4yNjkgNTEuMzYwNyAxMDMuNDQ1IDUwLjg4MjFDMTAzLjYyIDUwLjQwMzUgMTAzLjgzNCA0OS45Mjg0IDEwNC4wODUgNDkuNDU3N0MxMDQuMzM3IDQ4Ljk4NjQgMTA0LjYyMyA0OC41MzQ3IDEwNC45NDMgNDguMTAxNUMxMDUuMjY0IDQ3LjY2ODYgMTA1LjU5OSA0Ny4zMDc1IDEwNS45NSA0Ny4wMTg5QzEwNi4wMjYgNDcuMTEgMTA2LjA2IDQ3LjMzNzggMTA2LjA1MyA0Ny43MDI4QzEwNi4wNDUgNDguMDY3NCAxMDUuOTk5IDQ4LjUwMDYgMTA1LjkxNSA0OS4wMDE3Wk0xMTMuNjcgMzkuMTA5N0MxMTMuNDY0IDM4Ljg4MTkgMTEzLjIxMyAzOC43NTI5IDExMi45MTUgMzguNzIyM0MxMTIuNjE4IDM4LjY5MTkgMTEyLjMxNyAzOC44NTkgMTEyLjAxMiAzOS4yMjM3QzExMS44MTMgMzkuNTg4MyAxMTEuNTYyIDM5LjkzNzkgMTExLjI1NyA0MC4yNzIyQzExMC45NTIgNDAuNjA2NyAxMTAuNjM1IDQwLjkxMDMgMTEwLjMwNyA0MS4xODM5QzEwOS45OCA0MS40NTcyIDEwOS42NjcgNDEuNjkzMSAxMDkuMzcgNDEuODkwM0MxMDkuMDcyIDQyLjA4ODEgMTA4Ljg0IDQyLjIzMjQgMTA4LjY3MiA0Mi4zMjM1QzEwOC42MTEgNDEuODM3NCAxMDguNTc2IDQxLjMxMzIgMTA4LjU2OSA0MC43NTA3QzEwOC41NjEgNDAuMTg4NiAxMDguNTczIDM5LjYxOSAxMDguNjAzIDM5LjA0MTVDMTA4LjY0OSAzOC4yMjA5IDEwOC43NDQgMzcuMzkzIDEwOC44ODkgMzYuNTU3QzEwOS4wMzQgMzUuNzIxMyAxMDkuMjQ0IDM0LjkwMDcgMTA5LjUxOCAzNC4wOTUxQzEwOS41MTggMzMuNjcgMTA5LjQxOSAzMy4zMjQyIDEwOS4yMjEgMzMuMDU4MkMxMDkuMDIyIDMyLjc5MjQgMTA4Ljc4MiAzMi42MjUgMTA4LjUgMzIuNTU2N0MxMDguMjE4IDMyLjQ4ODUgMTA3LjkyOSAzMi41MjY0IDEwNy42MzEgMzIuNjcwN0MxMDcuMzM0IDMyLjgxNTMgMTA3LjA3OCAzMy4wNzc1IDEwNi44NjUgMzMuNDU2OUMxMDYuNjgyIDMzLjk1ODYgMTA2LjQ3MiAzNC41MjA3IDEwNi4yMzYgMzUuMTQzNkMxMDUuOTk5IDM1Ljc2NjcgMTA1LjczMiAzNi40MDEyIDEwNS40MzUgMzcuMDQ2OUMxMDUuMTM4IDM3LjY5MzEgMTA0LjgwNiAzOC4zMTk3IDEwNC40NCAzOC45MjczQzEwNC4wNzQgMzkuNTM1NCAxMDMuNjc0IDQwLjA3NSAxMDMuMjM5IDQwLjU0NTdDMTAyLjgwNCA0MS4wMTY4IDEwMi4zMzEgNDEuMzg1NCAxMDEuODIxIDQxLjY1MTJDMTAxLjMxIDQxLjkxNzIgMTAwLjc1NyA0Mi4wMzQ5IDEwMC4xNjIgNDIuMDA0NUM5OS44ODc2IDQxLjkyODUgOTkuNjg5MyA0MS43MjM1IDk5LjU2NzUgNDEuMzg4OUM5OS40NDUzIDQxLjA1NDkgOTkuMzczIDQwLjYzNjggOTkuMzUwNCA0MC4xMzU0Qzk5LjMyNzUgMzkuNjM0IDk5LjM1MDQgMzkuMDgzMSA5OS40MTg5IDM4LjQ4MjhDOTkuNDg3NyAzNy44ODI4IDk5LjU3OTEgMzcuMjg2MyA5OS42OTM0IDM2LjY5MzhDOTkuODA3OCAzNi4xMDEgOTkuOTMzNyAzNS41Mzg5IDEwMC4wNzEgMzUuMDA3MUMxMDAuMjA4IDM0LjQ3NTMgMTAwLjMzNyAzNC4wMjY4IDEwMC40NiAzMy42NjIyQzEwMC42NDMgMzMuMjIxOCAxMDAuNjQzIDMyLjg1MjkgMTAwLjQ2IDMyLjU1NjdDMTAwLjI3NyAzMi4yNjA0IDEwMC4wMjUgMzIuMDYzMSA5OS43MDUgMzEuOTY0Qzk5LjM4NDYgMzEuODY1NCA5OS4wNDg5IDMxLjg2OTQgOTguNjk4MyAzMS45NzU1Qzk4LjM0NzQgMzIuMDgxOSA5OC4wOTU4IDMyLjMxNzMgOTcuOTQzNSAzMi42ODJDOTcuNjg0IDMzLjMwNTQgOTcuNDQ3NSAzNC4wMDQgOTcuMjM0MiAzNC43NzlDOTcuMDIwNiAzNS41NTM5IDk2Ljg0OTEgMzYuMzU1OCA5Ni43MTk3IDM3LjE4MzZDOTYuNTg5NiAzOC4wMTIxIDk2LjUxNzEgMzguODMyNyA5Ni41MDIgMzkuNjQ1NkM5Ni41MDExIDM5LjY5ODUgOTYuNTAzNyAzOS43NDg4IDk2LjUwMzQgMzkuODAxNEM5Ni4xNzA5IDQwLjY4NDggOTUuODU0IDQxLjM1MjUgOTUuNTUzIDQxLjc5OTJDOTUuMTY0MSA0Mi4zNzcgOTQuNzI1MyA0Mi42Mjc3IDk0LjIzNzUgNDIuNTUxM0M5NC4wMjM2IDQyLjQ2MDMgOTMuODgzMiA0Mi4yNDc3IDkzLjgxNDcgNDEuOTEzMkM5My43NDUzIDQxLjU3OTIgOTMuNzIyNyA0MS4xNjg5IDkzLjc0NTMgNDAuNjgyMkM5My43Njg4IDQwLjE5NjQgOTMuODI2IDM5LjY0NTYgOTMuOTE3MSAzOS4wMjk5Qzk0LjAwOTEgMzguNDE0NiA5NC4xMjI5IDM3Ljc3NjQgOTQuMjYwMSAzNy4xMTU0Qzk0LjM5NzcgMzYuNDU0MSA5NC41NDI1IDM1Ljc4OTkgOTQuNjk0OSAzNS4xMjFDOTQuODQ3MiAzNC40NTI1IDk0Ljk4NDUgMzMuODIxOCA5NS4xMDcgMzMuMjI5MUM5NS4wOTE2IDMyLjY5NzMgOTQuOTM1MiAzMi4yOTEgOTQuNjM3NyAzMi4wMDk3Qzk0LjM0MDUgMzEuNzI4OSA5My45MjQ3IDMxLjYxODcgOTMuMzkxMyAzMS42NzkxQzkzLjAyNTMgMzEuODMxMiA5Mi43NTQyIDMyLjAyOSA5Mi41NzkgMzIuMjcxOUM5Mi40MDM0IDMyLjUxNDggOTIuMjYyMyAzMi44MjY1IDkyLjE1NTggMzMuMjA2MkM5Mi4wOTQ2IDMzLjQwNCA5Mi4wMDMyIDMzLjc5OSA5MS44ODEzIDM0LjM5MThDOTEuNzU5MSAzNC45ODQgOTEuNjAzIDM1LjY2NDQgOTEuNDEyMyAzNi40MzE1QzkxLjIyMTcgMzcuMTk5MiA5MC45OTY3IDM4LjAwMDUgOTAuNzM3NiAzOC44MzYyQzkwLjQ3ODEgMzkuNjcxOSA5MC4xODg1IDQwLjQyODMgODkuODY4NCA0MS4xMDQxQzg5LjU0OCA0MS43ODAxIDg5LjE5NzIgNDIuMzIzNSA4OC44MTYxIDQyLjczMzhDODguNDM0OCA0My4xNDM4IDg4LjAyMyA0My4zMTEzIDg3LjU4MDcgNDMuMjM1MkM4Ny4zMzY2IDQzLjE4OTUgODcuMTgwNSA0Mi45Mzg4IDg3LjExMiA0Mi40ODMxQzg3LjA0MzIgNDIuMDI3MSA4Ny4wMzE5IDQxLjQ2NTMgODcuMDc3NSA0MC43OTY0Qzg3LjEyMzMgNDAuMTI3OSA4Ny4yMTQ4IDM5LjM5NDYgODcuMzUyIDM4LjU5NzFDODcuNDg5MyAzNy43OTkzIDg3LjYzIDM3LjA0MzQgODcuNzc1MiAzNi4zMjg5Qzg3LjkyIDM1LjYxNDkgODguMDUzNSAzNC45ODQgODguMTc1NiAzNC40MzcyQzg4LjI5NzUgMzMuODkwMSA4OC4zODE0IDMzLjUyNTQgODguNDI3MiAzMy4zNDMzQzg4LjQyNzIgMzIuOTAyNiA4OC4zMjc3IDMyLjU0OTUgODguMTI5OCAzMi4yODMyQzg3LjkzMTMgMzIuMDE3OCA4Ny42OTEzIDMxLjg1MDMgODcuNDA5MiAzMS43ODE4Qzg3LjEyNjggMzEuNzEzNiA4Ni44MzcyIDMxLjc1MTQgODYuNTQgMzEuODk1N0M4Ni4yNDI2IDMyLjA0MDMgODUuOTg3MiAzMi4zMDI2IDg1Ljc3MzYgMzIuNjgyQzg1LjY5NzMgMzMuMDkyMyA4NS41OTggMzMuNTY3NCA4NS40NzYxIDM0LjEwNjdDODUuMzUzOSAzNC42NDU5IDg1LjIzNjEgMzUuMjAwNiA4NS4xMjE4IDM1Ljc3MDVDODUuMDA3NCAzNi4zNDA0IDg0LjkwMDMgMzYuODk4OCA4NC44MDE0IDM3LjQ0NTlDODQuNzAyMSAzNy45OTMgODQuNjI5OSAzOC40NzE2IDg0LjU4NCAzOC44ODE5Qzg0LjU1MzYgMzkuMjAwOCA4NC41MTkgMzkuNTkyMyA4NC40ODEzIDQwLjA1NTZDODQuNDQzIDQwLjUxOTQgODQuNDIzOCA0MS4wMDkyIDg0LjQyMzggNDEuNTI1N0M4NC40MjM4IDQyLjA0MjcgODQuNDYxOCA0Mi41NTU0IDg0LjUzODUgNDMuMDY0M0M4NC42MTQ1IDQzLjU3MzUgODQuNzUxOCA0NC4wNDA4IDg0Ljk1IDQ0LjQ2NTlDODUuMTQ4MiA0NC44OTE1IDg1LjQyNjUgNDUuMjQwOCA4NS43ODUyIDQ1LjUxNDRDODYuMTQzMyA0NS43ODc5IDg2LjU5NzIgNDUuOTM5NyA4Ny4xNDYzIDQ1Ljk3MDRDODcuNzEwMSA0Ni4wMDA1IDg4LjIwMiA0NS45NTkxIDg4LjYyMTcgNDUuODQ0OUM4OS4wNDEgNDUuNzMxIDg5LjQyMjEgNDUuNTUyMyA4OS43NjU0IDQ1LjMwOTFDOTAuMTA4NCA0NS4wNjY1IDkwLjQyMSA0NC43Nzc2IDkwLjcwMzMgNDQuNDQzQzkwLjk4NTEgNDQuMTA5MSA5MS4yNjM3IDQzLjc0NDQgOTEuNTM4MyA0My4zNDkxQzkxLjc5NzQgNDMuOTI2OSA5Mi4xMzI5IDQ0LjM3NDggOTIuNTQ0NyA0NC42OTRDOTIuOTU2NSA0NS4wMTMgOTMuMzkxMyA0NS4yMDMyIDkzLjg0ODYgNDUuMjYzN0M5NC4zMDYgNDUuMzI0MSA5NC43NzE1IDQ1LjI2MDIgOTUuMjQ0MiA0NS4wNjk5Qzk1LjcxNjcgNDQuODgwMyA5Ni4xNDM2IDQ0LjU1NzMgOTYuNTI1MiA0NC4xMDEyQzk2Ljc3NjIgNDMuODIxNiA5Ny4wMTMxIDQzLjUwMzggOTcuMjM1NCA0My4xNTI1Qzk3LjMyOTcgNDMuMzE3IDk3LjQzMDEgNDMuNDc1OCA5Ny41NDMgNDMuNjIyNEM5Ny45MTY4IDQ0LjEwOTEgOTguNDI0IDQ0LjQ0MyA5OS4wNjQ1IDQ0LjYyNTVDOTkuNzUwNiA0NC44MDggMTAwLjQyMSA0NC44Mzg2IDEwMS4wNzcgNDQuNzE2OUMxMDEuNzMzIDQ0LjU5NTQgMTAyLjM1OCA0NC4zNzQ4IDEwMi45NTMgNDQuMDU1OUMxMDMuNTQ4IDQzLjczNjYgMTA0LjEwMSA0My4zNTMyIDEwNC42MTIgNDIuOTA0N0MxMDUuMTIyIDQyLjQ1NjUgMTA1LjU2OCA0MS45ODk1IDEwNS45NSA0MS41MDI4QzEwNS45MzQgNDEuODUyNCAxMDUuOTI3IDQyLjE4MzIgMTA1LjkyNyA0Mi40OTQ0QzEwNS45MjcgNDIuODA2MSAxMDUuOTE5IDQzLjE0MzggMTA1LjkwNCA0My41MDg4QzEwNS4xNDEgNDQuMDQwOCAxMDQuNDIxIDQ0LjY3OSAxMDMuNzQyIDQ1LjQyMzNDMTAzLjA2NCA0Ni4xNjc2IDEwMi40NjkgNDYuOTYxNiAxMDEuOTU4IDQ3LjgwNTFDMTAxLjQ0NyA0OC42NDgzIDEwMS4wNDcgNDkuNTAzMSAxMDAuNzU3IDUwLjM2OTFDMTAwLjQ2NyA1MS4yMzU3IDEwMC4zMjYgNTIuMDQ0NSAxMDAuMzM0IDUyLjc5NjlDMTAwLjM0MSA1My41NDkgMTAwLjUyMSA1NC4yMDYgMTAwLjg3MSA1NC43NjgxQzEwMS4yMjIgNTUuMzMwNiAxMDEuNzk0IDU1LjczMzEgMTAyLjU4NyA1NS45NzYzQzEwMy40MTEgNTYuMjM0OCAxMDQuMTM1IDU2LjI0MiAxMDQuNzYgNTUuOTk5MUMxMDUuMzg2IDU1Ljc1NTkgMTA1LjkzMSA1NS4zNTMxIDEwNi4zOTYgNTQuNzkxQzEwNi44NjEgNTQuMjI4OSAxMDcuMjQyIDUzLjU0OSAxMDcuNTQgNTIuNzUxMkMxMDcuODM3IDUxLjk1MzQgMTA4LjA3MyA1MS4xMjE1IDEwOC4yNDkgNTAuMjU1NUMxMDguNDI0IDQ5LjM4OTQgMTA4LjUzNSA0OC41Mzc5IDEwOC41OCA0Ny43MDI4QzEwOC42MjYgNDYuODY2OCAxMDguNjI2IDQ2LjEyMTkgMTA4LjU4IDQ1LjQ2ODdDMTA5Ljg5MiA0NC45MjE5IDExMC45NjcgNDQuMjMwNSAxMTEuODA2IDQzLjM5NDVDMTEyLjY0NSA0Mi41NTk0IDExMy4zMzggNDEuNjc3OCAxMTMuODg3IDQwLjc1MDdDMTE0LjA1NSA0MC41MjI5IDExNC4xMTIgNDAuMjQ5MyAxMTQuMDU5IDM5LjkzMDRDMTE0LjAwNiAzOS42MTExIDExMy44NzYgMzkuMzM3NiAxMTMuNjcgMzkuMTA5N1pcIiBmaWxsPVwiIzBEMEMyM1wiLz5cclxuPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE0Mi41MyAzNy42NTE1QzE0Mi41NzUgMzcuMzAyMiAxNDIuNjQ0IDM2LjkzMzUgMTQyLjczNSAzNi41NDZDMTQyLjgyNyAzNi4xNTg1IDE0Mi45NDEgMzUuNzgyMyAxNDMuMDc5IDM1LjQxNzdDMTQzLjIxNiAzNS4wNTMxIDE0My4zNzYgMzQuNzM3OSAxNDMuNTU5IDM0LjQ3MThDMTQzLjc0MiAzNC4yMDYxIDE0My45MzcgMzQuMDE2MSAxNDQuMTQyIDMzLjkwMTlDMTQ0LjM0OCAzMy43ODgzIDE0NC41NTggMzMuNzk5NSAxNDQuNzcxIDMzLjkzNkMxNDUgMzQuMDczMSAxNDUuMTQxIDM0LjM2MTcgMTQ1LjE5NSAzNC44MDIxQzE0NS4yNDggMzUuMjQzMyAxNDUuMTk1IDM1LjcxNDEgMTQ1LjAzNCAzNi4yMTU1QzE0NC44NzQgMzYuNzE3MiAxNDQuNTg4IDM3LjE4NzkgMTQ0LjE3NyAzNy42Mjg2QzE0My43NjUgMzguMDY5NiAxNDMuMjA4IDM4LjM1NzkgMTQyLjUwNyAzOC40OTQ3QzE0Mi40NzYgMzguMjgyNCAxNDIuNDg0IDM4LjAwMTEgMTQyLjUzIDM3LjY1MTVaTTE1MC40NTYgMzguNTg1N0MxNTAuMjA0IDM4LjUxMDMgMTQ5Ljk2NCAzOC41MDI1IDE0OS43MzUgMzguNTYzMkMxNDkuNTA2IDM4LjYyMzkgMTQ5LjM2MSAzOC43ODM1IDE0OS4zMDEgMzkuMDQyQzE0OS4xNzggMzkuNTI4MSAxNDguOTg0IDQwLjAyNTggMTQ4LjcxNyA0MC41MzQ3QzE0OC40NSA0MS4wNDM5IDE0OC4xMjIgNDEuNTI2MiAxNDcuNzM0IDQxLjk4MjJDMTQ3LjM0NSA0Mi40MzggMTQ2LjkwNiA0Mi44NDA4IDE0Ni40MTggNDMuMTkwMUMxNDUuOTMgNDMuNTM5NyAxNDUuNDE5IDQzLjc5MDQgMTQ0Ljg4NiA0My45NDIyQzE0NC4zNTEgNDQuMTA5NiAxNDMuOTEgNDQuMTI4NCAxNDMuNTU5IDQzLjk5OTFDMTQzLjIwOCA0My44NzA1IDE0Mi45MyA0My42NDk4IDE0Mi43MjQgNDMuMzM4NEMxNDIuNTE4IDQzLjAyNyAxNDIuMzY5IDQyLjY1MDggMTQyLjI3OCA0Mi4yMTAxQzE0Mi4xODYgNDEuNzY5NCAxNDIuMTMzIDQxLjMxMzcgMTQyLjExOCA0MC44NDI0QzE0Mi45ODcgNDAuOTAzNCAxNDMuNzYxIDQwLjc0NzggMTQ0LjQ0IDQwLjM3NTFDMTQ1LjExOCA0MC4wMDMyIDE0NS42OTQgMzkuNTA5IDE0Ni4xNjcgMzguODkzN0MxNDYuNjM5IDM4LjI3ODQgMTQ2Ljk5OCAzNy41ODcgMTQ3LjI0MiAzNi44MTk1QzE0Ny40ODUgMzYuMDUyNCAxNDcuNjIzIDM1LjI4ODcgMTQ3LjY1MyAzNC41Mjg4QzE0Ny42NjkgMzMuODE0NiAxNDcuNTYyIDMzLjIxMDggMTQ3LjMzMyAzMi43MTY5QzE0Ny4xMDUgMzIuMjIzMyAxNDYuNzk2IDMxLjgzOSAxNDYuNDA3IDMxLjU2NThDMTQ2LjAxOCAzMS4yOTIyIDE0NS41NzIgMzEuMTMyNiAxNDUuMDY5IDMxLjA4NzJDMTQ0LjU2NiAzMS4wNDE1IDE0NC4wNTQgMzEuMTEgMTQzLjUzNiAzMS4yOTIyQzE0Mi45MSAzMS41MDUgMTQyLjM4MSAzMS44NTA2IDE0MS45NDYgMzIuMzI5NEMxNDEuNTEyIDMyLjgwOCAxNDEuMTQ5IDMzLjM2MjkgMTQwLjg2IDMzLjk5MzNDMTQwLjU3IDM0LjYyMzkgMTQwLjM0MSAzNS4zMDM4IDE0MC4xNzMgMzYuMDMzQzE0MC4wMDUgMzYuNzYyNiAxMzkuODgzIDM3LjQ4MDYgMTM5LjgwNyAzOC4xODczQzEzOS43MzkgMzguODIxNCAxMzkuNzAyIDM5LjQyNzggMTM5LjY4OSA0MC4wMTNDMTM5LjY1NyA0MC4wODc0IDEzOS42MjUgNDAuMTU4OCAxMzkuNTkgNDAuMjM4M0MxMzkuMzU0IDQwLjc3ODIgMTM5LjA3OSA0MS4zMDYyIDEzOC43NjYgNDEuODIyNkMxMzguNDU0IDQyLjMzOTQgMTM4LjEwNyA0Mi43NzI1IDEzNy43MjYgNDMuMTIxOEMxMzcuMzQ0IDQzLjQ3MTQgMTM2Ljk0OCA0My41OTI5IDEzNi41MzYgNDMuNDg2NUMxMzYuMjkyIDQzLjQyNiAxMzYuMTU5IDQzLjE0NDQgMTM2LjEzNiA0Mi42NDMzQzEzNi4xMTMgNDIuMTQxNiAxMzYuMTM5IDQxLjUxODcgMTM2LjIxNiA0MC43NzQxQzEzNi4yOTIgNDAuMDI5OCAxMzYuMzggMzkuMjIzOSAxMzYuNDc5IDM4LjM1NzlDMTM2LjU3OCAzNy40OTE4IDEzNi42MjggMzYuNjY0IDEzNi42MjggMzUuODczN0MxMzYuNjI4IDM1LjE4OTggMTM2LjQ5OCAzNC41MzI5IDEzNi4yMzkgMzMuOTAxOUMxMzUuOTc5IDMzLjI3MTggMTM1LjYyNSAzMi43NDczIDEzNS4xNzUgMzIuMzI5NEMxMzQuNzI1IDMxLjkxMTMgMTM0LjIwMyAzMS42MzQgMTMzLjYwOCAzMS40OTc1QzEzMy4wMTMgMzEuMzYwNSAxMzIuMzczIDMxLjQ1MTggMTMxLjY4NyAzMS43NzA4QzEzMSAzMi4wOSAxMzAuNDU1IDMyLjUzODIgMTMwLjA1MSAzMy4xMTU3QzEyOS42NDcgMzMuNjkzNCAxMjkuMjc3IDM0LjMwMDkgMTI4Ljk0MiAzNC45MzkxQzEyOC44MTkgMzQuNDUyOCAxMjguNjQxIDM0LjAwMTEgMTI4LjQwNCAzMy41ODNDMTI4LjE2NyAzMy4xNjUxIDEyNy44NzggMzIuODAwNSAxMjcuNTM1IDMyLjQ4ODhDMTI3LjE5MSAzMi4xNzc2IDEyNi44MDYgMzEuOTM0NCAxMjYuMzggMzEuNzU5NUMxMjUuOTUzIDMxLjU4NTEgMTI1LjUwMiAzMS40OTc1IDEyNS4wMyAzMS40OTc1QzEyNC41NzIgMzEuNDk3NSAxMjQuMTQ5IDMxLjU4NTEgMTIzLjc2IDMxLjc1OTVDMTIzLjM3MSAzMS45MzQ0IDEyMy4wMTcgMzIuMTU4MyAxMjIuNjk2IDMyLjQzMThDMTIyLjM3NiAzMi43MDU2IDEyMi4wODcgMzMuMDEzIDEyMS44MjcgMzMuMzU1MUMxMjEuNTY4IDMzLjY5NjkgMTIxLjMzOSAzNC4wMzUyIDEyMS4xNDEgMzQuMzY5MkMxMjEuMTEgMzMuOTc0MiAxMjEuMDc2IDMzLjYyODYgMTIxLjAzOCAzMy4zMzJDMTIxIDMzLjAzNTkgMTIwLjkzMSAzMi43ODUyIDEyMC44MzIgMzIuNTgwMUMxMjAuNzMzIDMyLjM3NDggMTIwLjU5MiAzMi4yMTkzIDEyMC40MDkgMzIuMTEyOUMxMjAuMjI2IDMyLjAwNjcgMTE5Ljk2NyAzMS45NTMyIDExOS42MzIgMzEuOTUzMkMxMTkuNDY0IDMxLjk1MzIgMTE5LjI5NiAzMS45ODc0IDExOS4xMjggMzIuMDU1NkMxMTguOTYgMzIuMTI0MSAxMTguODExIDMyLjIxOTMgMTE4LjY4MiAzMi4zNDA3QzExOC41NTIgMzIuNDYyNyAxMTguNDUzIDMyLjYxMDUgMTE4LjM4NSAzMi43ODUyQzExOC4zMTYgMzIuOTU5OCAxMTguMjk3IDMzLjE2MTQgMTE4LjMyNyAzMy4zODkyQzExOC4zNDIgMzMuNTU2NiAxMTguMzg1IDMzLjc1NzYgMTE4LjQ1MyAzMy45OTMzQzExOC41MjIgMzQuMjI4OSAxMTguNTg3IDM0LjUzNjkgMTE4LjY0OCAzNC45MTYzQzExOC43MDggMzUuMjk2MiAxMTguNzU4IDM1Ljc1NiAxMTguNzk2IDM2LjI5NTNDMTE4LjgzNCAzNi44MzQ5IDExOC44NDYgMzcuNDk1OSAxMTguODMxIDM4LjI3ODRDMTE4LjgxNSAzOS4wNjExIDExOC43NTggMzkuOTc2MyAxMTguNjU5IDQxLjAyNDhDMTE4LjU2IDQyLjA3MzMgMTE4LjQwMyA0My4yODkgMTE4LjE5IDQ0LjY3MTRDMTE4LjE2IDQ0Ljk5MDcgMTE4LjI4MiA0NS4yNDkyIDExOC41NTYgNDUuNDQ2N0MxMTguODMxIDQ1LjY0MzkgMTE5LjE0MyA0NS43NTc4IDExOS40OTQgNDUuNzg4NUMxMTkuODQ1IDQ1LjgxODggMTIwLjE3NyA0NS43NTc4IDEyMC40ODkgNDUuNjA2M0MxMjAuODAyIDQ1LjQ1MzkgMTIwLjk4MSA0NS4xODgyIDEyMS4wMjcgNDQuODA4NUMxMjEuMDcyIDQ0LjA5NDMgMTIxLjE2IDQzLjMzNDcgMTIxLjI5IDQyLjUyOUMxMjEuNDE5IDQxLjcyNCAxMjEuNTc5IDQwLjkyNjIgMTIxLjc3IDQwLjEzNTlDMTIxLjk2MSAzOS4zNDYgMTIyLjE3OCAzOC41OTM4IDEyMi40MjIgMzcuODc5M0MxMjIuNjY2IDM3LjE2NTEgMTIyLjkzNyAzNi41MzQ3IDEyMy4yMzQgMzUuOTg3NkMxMjMuNTMyIDM1LjQ0MDUgMTIzLjg0IDM1LjAwMzkgMTI0LjE2MSAzNC42NzcxQzEyNC40ODEgMzQuMzUwNCAxMjQuODE2IDM0LjE4NyAxMjUuMTY3IDM0LjE4N0MxMjUuNTk0IDM0LjE4NyAxMjUuOTI2IDM0LjM4MDUgMTI2LjE2MiAzNC43Njc5QzEyNi4zOTggMzUuMTU1NyAxMjYuNTY2IDM1LjY1MzYgMTI2LjY2NiAzNi4yNjA5QzEyNi43NjUgMzYuODY5IDEyNi44MSAzNy41MzQxIDEyNi44MDMgMzguMjU1NUMxMjYuNzk1IDM4Ljk3NzMgMTI2Ljc2NSAzOS42NzI0IDEyNi43MTEgNDAuMzQxQzEyNi42NTggNDEuMDA5OCAxMjYuNTk3IDQxLjYwNiAxMjYuNTI4IDQyLjEzMDNDMTI2LjQ2IDQyLjY1NDUgMTI2LjQxIDQzLjAxNTcgMTI2LjM4IDQzLjIxMjlDMTI2LjM4IDQzLjU2MjUgMTI2LjUxMyA0My44Mzk1IDEyNi43OCA0NC4wNDQ4QzEyNy4wNDYgNDQuMjQ5OCAxMjcuMzQ0IDQ0LjM3MTYgMTI3LjY3MiA0NC40MDk1QzEyOCA0NC40NDc2IDEyOC4zMDkgNDQuMzg2NiAxMjguNTk4IDQ0LjIyN0MxMjguODg4IDQ0LjA2NzQgMTI5LjA1NiA0My43OTgyIDEyOS4xMDIgNDMuNDE3OUMxMjkuMjU0IDQyLjMyNCAxMjkuNDY0IDQxLjIyNjQgMTI5LjczMSA0MC4xMjQ3QzEyOS45OTcgMzkuMDIzIDEzMC4zMDMgMzguMDM1NSAxMzAuNjQ2IDM3LjE2MTZDMTMwLjk4OSAzNi4yODc4IDEzMS4zNyAzNS41NzM1IDEzMS43OSAzNS4wMTg5QzEzMi4yMDkgMzQuNDY0NiAxMzIuNjU1IDM0LjE4NyAxMzMuMTI4IDM0LjE4N0MxMzMuMzcxIDM0LjE4NyAxMzMuNTU5IDM0LjM1NDQgMTMzLjY4OCAzNC42ODg0QzEzMy44MTggMzUuMDIyNyAxMzMuODgzIDM1LjQ3ODQgMTMzLjg4MyAzNi4wNTU5QzEzMy44ODMgMzYuNDgxNSAxMzMuODQ4IDM2LjkxODQgMTMzLjc4IDM3LjM2NjZDMTMzLjcxMSAzNy44MTQ4IDEzMy42MzEgMzguMjc4NCAxMzMuNTQgMzguNzU2OUMxMzMuNDQ4IDM5LjIzNTggMTMzLjM2OCAzOS43MjU2IDEzMy4yOTkgNDAuMjI3QzEzMy4yMzEgNDAuNzI4NyAxMzMuMTk2IDQxLjI1MjcgMTMzLjE5NiA0MS43OTk4QzEzMy4xOTYgNDIuMTc5NyAxMzMuMjM1IDQyLjYyMDQgMTMzLjMxMSA0My4xMjE4QzEzMy4zODcgNDMuNjIyOSAxMzMuNTMyIDQ0LjA5ODMgMTMzLjc0NSA0NC41NDYyQzEzMy45NTkgNDQuOTk0NyAxMzQuMjUyIDQ1LjM3NDQgMTM0LjYyNiA0NS42ODU4QzEzNSA0NS45OTczIDEzNS40NzYgNDYuMTUzMSAxMzYuMDU2IDQ2LjE1MzFDMTM2LjkyNSA0Ni4xNTMxIDEzNy42OTUgNDUuOTY2OSAxMzguMzY2IDQ1LjU5NDdDMTM5LjAzNyA0NS4yMjI2IDEzOS42MTMgNDQuNzM2NSAxNDAuMDkzIDQ0LjEzNjJDMTQwLjExOCA0NC4xMDQ3IDE0MC4xNDEgNDQuMDcxMSAxNDAuMTY1IDQ0LjAzOTlDMTQwLjIwMiA0NC4xMjg3IDE0MC4yMzUgNDQuMjIyNyAxNDAuMjc2IDQ0LjMwNzFDMTQwLjYwNCA0NC45NzU2IDE0MS4wNSA0NS40OTIxIDE0MS42MTUgNDUuODU3QzE0Mi4xNzggNDYuMjIxNiAxNDIuODQyIDQ2LjQyMjkgMTQzLjYwNSA0Ni40NjExQzE0NC4zNjcgNDYuNDk4NyAxNDUuMTk4IDQ2LjM1ODEgMTQ2LjA5OCA0Ni4wMzkyQzE0Ni43NjkgNDUuNzk2IDE0Ny4zNTIgNDUuNDkyMSAxNDcuODQ4IDQ1LjEyNzVDMTQ4LjM0MyA0NC43NjI4IDE0OC43ODkgNDQuMzE4NCAxNDkuMTg2IDQzLjc5NDFDMTQ5LjU4MyA0My4yNjk5IDE0OS45NDUgNDIuNjY1OCAxNTAuMjczIDQxLjk4MjJDMTUwLjYwMSA0MS4yOTgxIDE1MC45MzIgNDAuNTE1OSAxNTEuMjY4IDM5LjYzNDJDMTUxLjMyOSAzOS4zOTE2IDE1MS4yNzIgMzkuMTc1MSAxNTEuMDk3IDM4Ljk4NDhDMTUwLjkyMSAzOC43OTUxIDE1MC43MDggMzguNjYyMSAxNTAuNDU2IDM4LjU4NTdaXCIgZmlsbD1cIiMwRDBDMjNcIi8+XHJcbjxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNjIuODg3IDM2LjA0MzRDMTYyLjgxIDM2LjQ5MTggMTYyLjcwNyAzNi45ODYgMTYyLjU3OCAzNy41MjVDMTYyLjQ0OCAzOC4wNjQ2IDE2Mi4yODQgMzguNjIzIDE2Mi4wODYgMzkuMjAwNEMxNjEuODg4IDM5Ljc3NzkgMTYxLjY0NCA0MC4yOTg0IDE2MS4zNTQgNDAuNzYxNkMxNjEuMDY0IDQxLjIyNTQgMTYwLjczMyA0MS41OTM1IDE2MC4zNTkgNDEuODY3MUMxNTkuOTg1IDQyLjE0MDYgMTU5LjU1NSA0Mi4yNTQ2IDE1OS4wNjYgNDIuMjA4OUMxNTguODIyIDQyLjE3ODggMTU4LjYzNSA0Mi4wMTE3IDE1OC41MDYgNDEuNzA3NUMxNTguMzc2IDQxLjQwMzggMTU4LjMwOCA0MS4wMTYxIDE1OC4zIDQwLjU0NUMxNTguMjkyIDQwLjA3NDMgMTU4LjMzNCAzOS41NTc1IDE1OC40MjYgMzguOTk1MUMxNTguNTE3IDM4LjQzMzMgMTU4LjY1OCAzNy44ODIxIDE1OC44NDkgMzcuMzQyNkMxNTkuMDQgMzYuODAzNiAxNTkuMjcyIDM2LjMwNTYgMTU5LjU0NyAzNS44NDk2QzE1OS44MjEgMzUuMzkzOSAxNjAuMTM4IDM1LjA0MDUgMTYwLjQ5NiAzNC43ODk4QzE2MC44NTQgMzQuNTM5MSAxNjEuMjQ3IDM0LjQyMTcgMTYxLjY3NCAzNC40MzY1QzE2Mi4xMDEgMzQuNDUxOCAxNjIuNTU5IDM0LjY2NDMgMTYzLjA0NyAzNS4wNzQ3QzE2My4wMTYgMzUuMjcyNSAxNjIuOTYzIDM1LjU5NTQgMTYyLjg4NyAzNi4wNDM0Wk0xNzEuMDE5IDM3Ljc4N0MxNzAuNzgyIDM3LjY2NTYgMTcwLjUzOCAzNy42MzkyIDE3MC4yODcgMzcuNzA3NUMxNzAuMDM1IDM3Ljc3NTcgMTY5Ljg1NiAzOC4wMDc2IDE2OS43NDkgMzguNDAyNkMxNjkuNjg4IDM4LjgyODMgMTY5LjU1MSAzOS4zMjk0IDE2OS4zMzggMzkuOTA2OUMxNjkuMTI0IDQwLjQ4NDMgMTY4Ljg2MSA0MS4wMzE3IDE2OC41NDggNDEuNTQ3OEMxNjguMjM2IDQyLjA2NDYgMTY3Ljg3NyA0Mi40OTQgMTY3LjQ3MyA0Mi44MzU4QzE2Ny4wNjkgNDMuMTc3OCAxNjYuNjM4IDQzLjMzMzcgMTY2LjE4MSA0My4zMDI4QzE2NS43OTkgNDMuMjcyNyAxNjUuNTMyIDQzLjA3OSAxNjUuMzggNDIuNzIxOEMxNjUuMjI3IDQyLjM2NDcgMTY1LjE0NyA0MS45MTY4IDE2NS4xNCA0MS4zNzY5QzE2NS4xMzIgNDAuODM4IDE2NS4xODYgNDAuMjMwMSAxNjUuMyAzOS41NTM4QzE2NS40MTQgMzguODc3NyAxNjUuNTUyIDM4LjIwNTQgMTY1LjcxMiAzNy41MzYzQzE2NS44NzIgMzYuODY4IDE2Ni4wMzYgMzYuMjI1OCAxNjYuMjA0IDM1LjYxMDVDMTY2LjM3MSAzNC45OTUxIDE2Ni41MDggMzQuNDc0NyAxNjYuNjE2IDM0LjA0OTNDMTY2LjczOCAzMy42NjkzIDE2Ni42OTkgMzMuMzQ2NiAxNjYuNTAxIDMzLjA4MDNDMTY2LjMwMyAzMi44MTQ5IDE2Ni4wNTUgMzIuNjI0NiAxNjUuNzU4IDMyLjUxMDdDMTY1LjQ2IDMyLjM5NjcgMTY1LjE1OSAzMi4zNjY0IDE2NC44NTQgMzIuNDE5NkMxNjQuNTQ5IDMyLjQ3MjggMTY0LjM1MSAzMi42MzYyIDE2NC4yNTkgMzIuOTA5NEMxNjMuMzU5IDMyLjEzNDUgMTYyLjQ5NCAzMS43MTY2IDE2MS42NjMgMzEuNjU1OUMxNjAuODMxIDMxLjU5NTIgMTYwLjA2NSAzMS43Nzc2IDE1OS4zNjQgMzIuMjAzQzE1OC42NjIgMzIuNjI4NCAxNTguMDQxIDMzLjI0MzcgMTU3LjUgMzQuMDQ5M0MxNTYuOTU4IDM0Ljg1NDkgMTU2LjUyIDM1LjczMjIgMTU2LjE4NCAzNi42ODE4QzE1NS44NDkgMzcuNjMxNCAxNTUuNjM5IDM4LjYwMDQgMTU1LjU1NSAzOS41ODc5QzE1NS40NzEgNDAuNTc1NyAxNTUuNTM2IDQxLjQ3NjEgMTU1Ljc1IDQyLjI4OUMxNTUuOTYzIDQzLjEwMTggMTU2LjM0IDQzLjc2NjkgMTU2Ljg4MiA0NC4yODNDMTU3LjQyMyA0NC43OTk4IDE1OC4xNTkgNDUuMDU4MyAxNTkuMDg5IDQ1LjA1ODNDMTU5LjUwMSA0NS4wNTgzIDE1OS44OTggNDQuOTc0NyAxNjAuMjc5IDQ0LjgwNzZDMTYwLjY2IDQ0LjY0MDEgMTYxLjAxMSA0NC40NDI2IDE2MS4zMzEgNDQuMjE0OEMxNjEuNjUxIDQzLjk4NjkgMTYxLjkzMyA0My43NDc1IDE2Mi4xNzggNDMuNDk2OEMxNjIuNDIxIDQzLjI0NjEgMTYyLjYxMiA0My4wMzczIDE2Mi43NDkgNDIuODY5OUMxNjIuODU2IDQzLjQxNyAxNjMuMDMyIDQzLjg4MDggMTYzLjI3NiA0NC4yNjA1QzE2My41MTkgNDQuNjQwMSAxNjMuNzk4IDQ0Ljk1MjEgMTY0LjExMSA0NS4xOTQ4QzE2NC40MjMgNDUuNDM3NiAxNjQuNzUxIDQ1LjYxNjQgMTY1LjA5NCA0NS43MzA2QzE2NS40MzcgNDUuODQ0NSAxNjUuNzY5IDQ1LjkwMTUgMTY2LjA4OSA0NS45MDE1QzE2Ni44MDYgNDUuOTAxNSAxNjcuNDc3IDQ1LjY1ODMgMTY4LjEwMiA0NS4xNzE5QzE2OC43MjcgNDQuNjg2MSAxNjkuMjg4IDQ0LjA4OTMgMTY5Ljc4NCA0My4zODI5QzE3MC4yNzkgNDIuNjc2MiAxNzAuNjg3IDQxLjkzMTkgMTcxLjAwNyA0MS4xNDkxQzE3MS4zMjggNDAuMzY2NiAxNzEuNTQxIDM5LjY3MTUgMTcxLjY0OCAzOS4wNjM0QzE3MS43NTUgMzguODM1NSAxNzEuNzM1IDM4LjU5NjQgMTcxLjU5MSAzOC4zNDU3QzE3MS40NDYgMzguMDk1IDE3MS4yNTUgMzcuOTA5IDE3MS4wMTkgMzcuNzg3WlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxyXG48cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMjEyLjE5NCA1MC4zNzAxQzIxMi4wNjQgNTAuODg2NiAyMTEuODYyIDUxLjMyMzggMjExLjU4NyA1MS42ODA2QzIxMS4zMTMgNTIuMDM3NyAyMTAuOTcgNTIuMjIzOSAyMTAuNTU4IDUyLjIzOTNDMjEwLjI5OSA1Mi4yNTQzIDIxMC4xMDEgNTIuMTE3NSAyMDkuOTYzIDUxLjgyODlDMjA5LjgyNiA1MS41NDAxIDIwOS43MzEgNTEuMTY3OSAyMDkuNjc4IDUwLjcxMjJDMjA5LjYyNCA1MC4yNTYyIDIwOS42MDEgNDkuNzQ3IDIwOS42MDkgNDkuMTg0OUMyMDkuNjE2IDQ4LjYyMjcgMjA5LjYzOSA0OC4wNjgxIDIwOS42NzggNDcuNTIxQzIwOS43MTUgNDYuOTc0MiAyMDkuNzYxIDQ2LjQ2NDcgMjA5LjgxNSA0NS45OTM5QzIwOS44NjggNDUuNTIyNiAyMDkuOTEgNDUuMTU4NiAyMDkuOTQgNDQuOUMyMTAuNDU5IDQ0Ljk2MDggMjEwLjg5IDQ1LjE4NDYgMjExLjIzMyA0NS41NzIzQzIxMS41NzYgNDUuOTU5OCAyMTEuODM5IDQ2LjQxOTMgMjEyLjAyMiA0Ni45NTE0QzIxMi4yMDUgNDcuNDgzMSAyMTIuMzEyIDQ4LjA1NjggMjEyLjM0MyA0OC42NzIyQzIxMi4zNzMgNDkuMjg3NSAyMTIuMzIzIDQ5Ljg1MzQgMjEyLjE5NCA1MC4zNzAxWk0yMDMuOTEzIDUwLjM3MDFDMjAzLjc4MyA1MC44ODY2IDIwMy41ODEgNTEuMzIzOCAyMDMuMzA3IDUxLjY4MDZDMjAzLjAzMiA1Mi4wMzc3IDIwMi42ODkgNTIuMjIzOSAyMDIuMjc3IDUyLjIzOTNDMjAyLjAxOCA1Mi4yNTQzIDIwMS44MiA1Mi4xMTc1IDIwMS42ODMgNTEuODI4OUMyMDEuNTQ1IDUxLjU0MDEgMjAxLjQ1IDUxLjE2NzkgMjAxLjM5NyA1MC43MTIyQzIwMS4zNDMgNTAuMjU2MiAyMDEuMzIgNDkuNzQ3IDIwMS4zMjggNDkuMTg0OUMyMDEuMzM2IDQ4LjYyMjcgMjAxLjM1OCA0OC4wNjgxIDIwMS4zOTcgNDcuNTIxQzIwMS40MzQgNDYuOTc0MiAyMDEuNDggNDYuNDY0NyAyMDEuNTM0IDQ1Ljk5MzlDMjAxLjU4NyA0NS41MjI2IDIwMS42MjkgNDUuMTU4NiAyMDEuNjYgNDQuOUMyMDIuMTc4IDQ0Ljk2MDggMjAyLjYwOSA0NS4xODQ2IDIwMi45NTIgNDUuNTcyM0MyMDMuMjk1IDQ1Ljk1OTggMjAzLjU1OCA0Ni40MTkzIDIwMy43NDEgNDYuOTUxNEMyMDMuOTI0IDQ3LjQ4MzEgMjA0LjAzMSA0OC4wNTY4IDIwNC4wNjIgNDguNjcyMkMyMDQuMDkyIDQ5LjI4NzUgMjA0LjA0MiA0OS44NTM0IDIwMy45MTMgNTAuMzcwMVpNMTk1LjQxNSAzNy40MjQxQzE5NS4zOTkgMzcuNzg4NCAxOTUuMzY1IDM4LjExMTQgMTk1LjMxMiAzOC4zOTI1QzE5NS4yNTggMzguNjc0MSAxOTUuMTg2IDM4Ljg1MjIgMTk1LjA5NSAzOC45MjgzQzE5NC45MjcgMzguODM2OSAxOTQuNzIxIDM4LjYwMTggMTk0LjQ3NyAzOC4yMjE2QzE5NC4yMzMgMzcuODQxOSAxOTQuMDQyIDM3LjQxMjIgMTkzLjkwNSAzNi45MzM2QzE5My43NjggMzYuNDU1MSAxOTMuNzI1IDM1Ljk4NDMgMTkzLjc3OSAzNS41MjA1QzE5My44MzIgMzUuMDU3MyAxOTQuMDczIDM0LjY5NjcgMTk0LjUgMzQuNDM3OUMxOTQuNjY3IDM0LjM0NjggMTk0LjgxMiAzNC4zODA5IDE5NC45MzQgMzQuNTQwNUMxOTUuMDU2IDM0LjcwMDEgMTk1LjE1NSAzNC45MzE4IDE5NS4yMzIgMzUuMjM1N0MxOTUuMzA4IDM1LjUzOTkgMTk1LjM2MSAzNS44ODkyIDE5NS4zOTIgMzYuMjg0MkMxOTUuNDIyIDM2LjY3OTUgMTk1LjQzIDM3LjA1OTEgMTk1LjQxNSAzNy40MjQxWk0xOTMuMzkgNDEuOTcxMUMxOTMuMTU0IDQyLjIyMTUgMTkyLjg5IDQyLjQzODEgMTkyLjYwMSA0Mi42MjA2QzE5Mi4zMTEgNDIuODAzIDE5Mi4wMTQgNDIuOTM5OCAxOTEuNzA5IDQzLjAzMDlDMTkxLjQwNCA0My4xMjIzIDE5MS4xMjkgNDMuMTQ0OCAxOTAuODg1IDQzLjA5OTFDMTkwLjE5OSA0Mi45NjI3IDE4OS42NzMgNDIuNjY2IDE4OS4zMDcgNDIuMjEwM0MxODguOTQxIDQxLjc1NDUgMTg4LjcwOCA0MS4yMTkgMTg4LjYwOSA0MC42MDM3QzE4OC41MSAzOS45ODgxIDE4OC41MjEgMzkuMzMwOCAxODguNjQ0IDM4LjYzMTlDMTg4Ljc2NSAzNy45MzMgMTg4Ljk3MSAzNy4yODM1IDE4OS4yNjEgMzYuNjgzMkMxODkuNTUxIDM2LjA4MjkgMTg5LjkwMiAzNS41NjYyIDE5MC4zMTMgMzUuMTMzM0MxOTAuNzI1IDM0LjcwMDEgMTkxLjE3NSAzNC40MzA2IDE5MS42NjMgMzQuMzIzOUMxOTEuNDggMzUuMDk4OSAxOTEuNDE5IDM1LjkwMDcgMTkxLjQ4IDM2LjcyODZDMTkxLjU0MSAzNy41NTY4IDE5MS43MzkgMzguMzM1NSAxOTIuMDc1IDM5LjA2NDhDMTkyLjI4OCAzOS41MDYgMTkyLjU0NCAzOS45MDgyIDE5Mi44NDEgNDAuMjcyOUMxOTMuMTM5IDQwLjYzNzggMTkzLjUwMSA0MC45NDkyIDE5My45MjggNDEuMjA3NUMxOTMuODA2IDQxLjQ2NiAxOTMuNjI2IDQxLjcyMDQgMTkzLjM5IDQxLjk3MTFaTTIxOC43MDIgMzcuNjUxOUMyMTguNzQ3IDM3LjMwMjYgMjE4LjgxNiAzNi45MzM2IDIxOC45MDggMzYuNTQ2MkMyMTguOTk5IDM2LjE1OSAyMTkuMTE0IDM1Ljc4MjggMjE5LjI1MSAzNS40MTgxQzIxOS4zODggMzUuMDUzMiAyMTkuNTQ4IDM0LjczOCAyMTkuNzMxIDM0LjQ3MjNDMjE5LjkxNCAzNC4yMDY1IDIyMC4xMDggMzQuMDE2MyAyMjAuMzE0IDMzLjkwMjRDMjIwLjUyIDMzLjc4ODQgMjIwLjczIDMzLjc5OTcgMjIwLjk0MyAzMy45MzY1QzIyMS4xNzIgMzQuMDczNSAyMjEuMzEzIDM0LjM2MjEgMjIxLjM2NyAzNC44MDI1QzIyMS40MiAzNS4yNDM1IDIyMS4zNjcgMzUuNzE0MiAyMjEuMjA3IDM2LjIxNTlDMjIxLjA0NiAzNi43MTczIDIyMC43NjEgMzcuMTg4NCAyMjAuMzQ5IDM3LjYyODhDMjE5LjkzNyAzOC4wNyAyMTkuMzggMzguMzU4MyAyMTguNjc5IDM4LjQ5NTFDMjE4LjY0OCAzOC4yODI2IDIxOC42NTYgMzguMDAxNSAyMTguNzAyIDM3LjY1MTlaTTIyNy45MjEgMzcuNjUxOUMyMjcuOTY2IDM3LjMwMjYgMjI4LjAzNSAzNi45MzM2IDIyOC4xMjYgMzYuNTQ2MkMyMjguMjE4IDM2LjE1OSAyMjguMzMyIDM1Ljc4MjggMjI4LjQ3IDM1LjQxODFDMjI4LjYwNyAzNS4wNTMyIDIyOC43NjcgMzQuNzM4IDIyOC45NSAzNC40NzIzQzIyOS4xMzMgMzQuMjA2NSAyMjkuMzI4IDM0LjAxNjMgMjI5LjUzMyAzMy45MDI0QzIyOS43MzkgMzMuNzg4NCAyMjkuOTQ5IDMzLjc5OTcgMjMwLjE2MiAzMy45MzY1QzIzMC4zOTEgMzQuMDczNSAyMzAuNTMyIDM0LjM2MjEgMjMwLjU4NiAzNC44MDI1QzIzMC42MzkgMzUuMjQzNSAyMzAuNTg2IDM1LjcxNDIgMjMwLjQyNSAzNi4yMTU5QzIzMC4yNjUgMzYuNzE3MyAyMjkuOTc5IDM3LjE4ODQgMjI5LjU2OCAzNy42Mjg4QzIyOS4xNTYgMzguMDcgMjI4LjU5OSAzOC4zNTgzIDIyNy44OTggMzguNDk1MUMyMjcuODY3IDM4LjI4MjYgMjI3Ljg3NSAzOC4wMDE1IDIyNy45MjEgMzcuNjUxOVpNMjM2LjQ4OCAzOC45ODUyQzIzNi4zMTIgMzguNzk1NSAyMzYuMDk5IDM4LjY2MjUgMjM1Ljg0NyAzOC41ODYyQzIzNS41OTUgMzguNTEwNCAyMzUuMzU1IDM4LjUwMjkgMjM1LjEyNiAzOC41NjM2QzIzNC44OTcgMzguNjI0NCAyMzQuNzUyIDM4Ljc4NCAyMzQuNjkyIDM5LjA0MjJDMjM0LjU3IDM5LjUyODYgMjM0LjM3NSA0MC4wMjYyIDIzNC4xMDggNDAuNTM0OUMyMzMuODQxIDQxLjA0NDQgMjMzLjUxNCA0MS41MjY3IDIzMy4xMjUgNDEuOTgyNEMyMzIuNzM2IDQyLjQzODEgMjMyLjI5NyA0Mi44NDEyIDIzMS44MSA0My4xOTA1QzIzMS4zMjEgNDMuNTQwMSAyMzAuODEgNDMuNzkwOCAyMzAuMjc3IDQzLjk0MjNDMjI5Ljc0MyA0NC4xMTAxIDIyOS4zMDEgNDQuMTI4OSAyMjguOTUgNDMuOTk5NkMyMjguNTk5IDQzLjg3MDYgMjI4LjMyMSA0My42NTAzIDIyOC4xMTUgNDMuMzM4OUMyMjcuOTA5IDQzLjAyNzEgMjI3Ljc2MSA0Mi42NTEyIDIyNy42NjkgNDIuMjEwM0MyMjcuNTc4IDQxLjc2OTkgMjI3LjUyNCA0MS4zMTQyIDIyNy41MDkgNDAuODQyOEMyMjguMzc4IDQwLjkwMzggMjI5LjE1MiA0MC43NDgzIDIyOS44MzEgNDAuMzc1NUMyMzAuNTA5IDQwLjAwMzQgMjMxLjA4NSAzOS41MDkyIDIzMS41NTggMzguODkzOUMyMzIuMDMxIDM4LjI3ODggMjMyLjM4OSAzNy41ODc0IDIzMi42MzMgMzYuODJDMjMyLjg3NyAzNi4wNTI2IDIzMy4wMTQgMzUuMjg5MiAyMzMuMDQ1IDM0LjUyOTNDMjMzLjA2IDMzLjgxNSAyMzIuOTUzIDMzLjIxMSAyMzIuNzI0IDMyLjcxNzFDMjMyLjQ5NiAzMi4yMjM1IDIzMi4xODcgMzEuODM5NSAyMzEuNzk4IDMxLjU2NjJDMjMxLjQwOSAzMS4yOTI0IDIzMC45NjMgMzEuMTMzIDIzMC40NiAzMS4wODc0QzIyOS45NTcgMzEuMDQxNyAyMjkuNDQ1IDMxLjExMDUgMjI4LjkyNyAzMS4yOTI0QzIyOC4zMDIgMzEuNTA1NSAyMjcuNzcyIDMxLjg1MSAyMjcuMzM4IDMyLjMyOTZDMjI2LjkwMyAzMi44MDg1IDIyNi41NCAzMy4zNjM0IDIyNi4yNTEgMzMuOTkzNEMyMjUuOTYxIDM0LjYyNDQgMjI1LjczMiAzNS4zMDM5IDIyNS41NjQgMzYuMDMzNUMyMjUuMzk2IDM2Ljc2MjcgMjI1LjI3NCAzNy40ODEgMjI1LjE5OSAzOC4xODc0QzIyNS4xMjQgMzguODczIDIyNS4wODQgMzkuNTI5MiAyMjUuMDc1IDQwLjE1NzJDMjI1LjAxNyA0MC4yODI0IDIyNC45NTYgNDAuNDA4MiAyMjQuODg5IDQwLjUzNDlDMjI0LjYyMiA0MS4wNDQ0IDIyNC4yOTUgNDEuNTI2NyAyMjMuOTA2IDQxLjk4MjRDMjIzLjUxNyA0Mi40MzgxIDIyMy4wNzggNDIuODQxMiAyMjIuNTkxIDQzLjE5MDVDMjIyLjEwMiA0My41NDAxIDIyMS41OTIgNDMuNzkwOCAyMjEuMDU4IDQzLjk0MjNDMjIwLjUyNCA0NC4xMTAxIDIyMC4wODIgNDQuMTI4OSAyMTkuNzMxIDQzLjk5OTZDMjE5LjM4IDQzLjg3MDYgMjE5LjEwMiA0My42NTAzIDIxOC44OTYgNDMuMzM4OUMyMTguNjkxIDQzLjAyNzEgMjE4LjU0MiA0Mi42NTEyIDIxOC40NSA0Mi4yMTAzQzIxOC4zNTkgNDEuNzY5OSAyMTguMzA1IDQxLjMxNDIgMjE4LjI5IDQwLjg0MjhDMjE5LjE1OSA0MC45MDM4IDIxOS45MzMgNDAuNzQ4MyAyMjAuNjEyIDQwLjM3NTVDMjIxLjI5IDQwLjAwMzQgMjIxLjg2NiAzOS41MDkyIDIyMi4zMzkgMzguODkzOUMyMjIuODExIDM4LjI3ODggMjIzLjE3IDM3LjU4NzQgMjIzLjQxNCAzNi44MkMyMjMuNjU4IDM2LjA1MjYgMjIzLjc5NSAzNS4yODkyIDIyMy44MjYgMzQuNTI5M0MyMjMuODQxIDMzLjgxNSAyMjMuNzM0IDMzLjIxMSAyMjMuNTA2IDMyLjcxNzFDMjIzLjI3NyAzMi4yMjM1IDIyMi45NjggMzEuODM5NSAyMjIuNTc5IDMxLjU2NjJDMjIyLjE5IDMxLjI5MjQgMjIxLjc0NCAzMS4xMzMgMjIxLjI0MSAzMS4wODc0QzIyMC43MzggMzEuMDQxNyAyMjAuMjI3IDMxLjExMDUgMjE5LjcwOCAzMS4yOTI0QzIxOS4wODMgMzEuNTA1NSAyMTguNTUzIDMxLjg1MSAyMTguMTE5IDMyLjMyOTZDMjE3LjY4NCAzMi44MDg1IDIxNy4zMjEgMzMuMzYzNCAyMTcuMDMyIDMzLjk5MzRDMjE2Ljc0MiAzNC42MjQ0IDIxNi41MTMgMzUuMzAzOSAyMTYuMzQ2IDM2LjAzMzVDMjE2LjE3OCAzNi43NjI3IDIxNi4wNTYgMzcuNDgxIDIxNS45OCAzOC4xODc0QzIxNS45MzYgMzguNTg1OSAyMTUuOTA3IDM4Ljk3MjIgMjE1Ljg4NiAzOS4zNTE2QzIxNS43MzkgMzkuNDc2NSAyMTUuNTk1IDM5LjYwMjMgMjE1LjQ0MiAzOS43MjU4QzIxNC45MTYgNDAuMTUxNCAyMTQuMzYzIDQwLjUzNDkgMjEzLjc4NCA0MC44NzY5QzIxMy4yMDQgNDEuMjE5IDIxMi42MDEgNDEuNTAwMSAyMTEuOTc3IDQxLjcyMDRDMjExLjM1MSA0MS45NDA4IDIxMC43MSA0Mi4wNzM4IDIxMC4wNTUgNDIuMTE5MkwyMTEuNDczIDI2Ljk4NDdDMjExLjU2NSAyNi42NjU1IDIxMS41MTkgMjYuMzg0NyAyMTEuMzM2IDI2LjE0MTVDMjExLjE1MyAyNS44OTgzIDIxMC45MTYgMjUuNzMxMiAyMTAuNjI3IDI1LjY0MDFDMjEwLjMzNyAyNS41NDg4IDIxMC4wMjggMjUuNTU2NiAyMDkuNyAyNS42NjI3QzIwOS4zNzIgMjUuNzY5NCAyMDkuMTAyIDI2LjAxMjYgMjA4Ljg4OCAyNi4zOTE5QzIwOC43ODEgMjYuOTY5NyAyMDguNjcxIDI3Ljc1OTcgMjA4LjU1NyAyOC43NjI1QzIwOC40NDIgMjkuNzY1MyAyMDguMzI4IDMwLjg1OTUgMjA4LjIxMyAzMi4wNDQ4QzIwOC4wOTkgMzMuMjMgMjA3Ljk4NSAzNC40NTMyIDIwNy44NyAzNS43MTQyQzIwNy43NTYgMzYuOTc1OSAyMDcuNjU3IDM4LjE1MzMgMjA3LjU3MyAzOS4yNDcyQzIwNy41NjkgMzkuMjk1OCAyMDcuNTY2IDM5LjMzOTggMjA3LjU2MiAzOS4zODc4QzIwNy40MjkgMzkuNTAwNSAyMDcuMjk5IDM5LjYxNDIgMjA3LjE2MSAzOS43MjU4QzIwNi42MzUgNDAuMTUxNCAyMDYuMDgyIDQwLjUzNDkgMjA1LjUwMyA0MC44NzY5QzIwNC45MjMgNDEuMjE5IDIwNC4zMjEgNDEuNTAwMSAyMDMuNjk2IDQxLjcyMDRDMjAzLjA3IDQxLjk0MDggMjAyLjQyOSA0Mi4wNzM4IDIwMS43NzQgNDIuMTE5MkwyMDMuMTkyIDI2Ljk4NDdDMjAzLjI4NCAyNi42NjU1IDIwMy4yMzggMjYuMzg0NyAyMDMuMDU1IDI2LjE0MTVDMjAyLjg3MiAyNS44OTgzIDIwMi42MzUgMjUuNzMxMiAyMDIuMzQ2IDI1LjY0MDFDMjAyLjA1NiAyNS41NDg4IDIwMS43NDcgMjUuNTU2NiAyMDEuNDE5IDI1LjY2MjdDMjAxLjA5MSAyNS43Njk0IDIwMC44MjEgMjYuMDEyNiAyMDAuNjA3IDI2LjM5MTlDMjAwLjUwMSAyNi45Njk3IDIwMC4zOSAyNy43NTk3IDIwMC4yNzYgMjguNzYyNUMyMDAuMTYxIDI5Ljc2NTMgMjAwLjA0NyAzMC44NTk1IDE5OS45MzMgMzIuMDQ0OEMxOTkuODE4IDMzLjIzIDE5OS43MDQgMzQuNDUzMiAxOTkuNTg5IDM1LjcxNDJDMTk5LjQ3NSAzNi45NzU5IDE5OS4zNzYgMzguMTUzMyAxOTkuMjkyIDM5LjI0NzJDMTk5LjI5IDM5LjI2OTIgMTk5LjI4OSAzOS4yODkxIDE5OS4yODcgMzkuMzExMUMxOTkuMDQ4IDM5LjQyMTkgMTk4Ljc4NiAzOS41MTkgMTk4LjUwMyAzOS42MDA2QzE5OC4yMTMgMzkuNjg0NCAxOTcuODg1IDM5LjczMzkgMTk3LjUxOSAzOS43NDg5QzE5Ny41OCAzOS40NzUxIDE5Ny42MyAzOS4xNzEyIDE5Ny42NjggMzguODM2OUMxOTcuNzA2IDM4LjUwMjkgMTk3LjczNyAzOC4xNTMzIDE5Ny43NiAzNy43ODg0QzE5Ny43ODIgMzcuNDI0MSAxOTcuNzkgMzcuMDU5MSAxOTcuNzgyIDM2LjY5NDVDMTk3Ljc3NCAzNi4zMjk2IDE5Ny43NTUgMzUuOTk1NiAxOTcuNzI1IDM1LjY5MTRDMTk3LjY0OSAzNS4wMzg1IDE5Ny41MDggMzQuNDE5MSAxOTcuMzAyIDMzLjgzMzhDMTk3LjA5NiAzMy4yNDkxIDE5Ni44MTggMzIuNzU5MyAxOTYuNDY3IDMyLjM2MzdDMTk2LjExNiAzMS45Njg3IDE5NS42NzggMzEuNzAyNyAxOTUuMTUxIDMxLjU2NjJDMTk0LjYyNiAzMS40Mjk0IDE5NC4wMTIgMzEuNDc0OCAxOTMuMzEgMzEuNzAyN0MxOTIuMjczIDMxLjU2NjIgMTkxLjMzOSAzMS42NjEzIDE5MC41MDggMzEuOTg3OEMxODkuNjc3IDMyLjMxNDkgMTg4Ljk1NiAzMi43ODk0IDE4OC4zNDYgMzMuNDEyMkMxODcuNzM2IDM0LjAzNTcgMTg3LjIzNyAzNC43Njg0IDE4Ni44NDggMzUuNjExOUMxODYuNDU5IDM2LjQ1NTEgMTg2LjIgMzcuMzIxNCAxODYuMDcgMzguMjFDMTg2LjAxNSAzOC41ODY4IDE4NS45ODggMzguOTYxOCAxODUuOTggMzkuMzM2QzE4NS43NDQgMzkuODE3NyAxODUuNDg2IDQwLjIzODggMTg1LjIwMSA0MC41OTIxQzE4NC43OTcgNDEuMDkzNSAxODQuMzc3IDQxLjUwMzggMTgzLjk0MyA0MS44MjI4QzE4My41MDggNDIuMTQyIDE4My4wNzcgNDIuMzg1MiAxODIuNjUgNDIuNTUyM0MxODIuMjIzIDQyLjcxOTggMTgxLjg0MiA0Mi44MzM3IDE4MS41MDcgNDIuODk0MUMxODEuMTEgNDIuOTcwMiAxODAuNzI5IDQyLjk3OCAxODAuMzYzIDQyLjkxN0MxNzkuOTk3IDQyLjg1NjUgMTc5LjY2MSA0Mi42ODE2IDE3OS4zNTcgNDIuMzkyN0MxNzkuMTEyIDQyLjE4MDIgMTc4LjkyNSA0MS44MzgxIDE3OC43OTYgNDEuMzY3MUMxNzguNjY2IDQwLjg5NiAxNzguNTkgNDAuMzYwOCAxNzguNTY3IDM5Ljc2MDJDMTc4LjU0NCAzOS4xNTk5IDE3OC41NjcgMzguNTMzIDE3OC42MzYgMzcuODc5OEMxNzguNzA1IDM3LjIyNjYgMTc4LjgyMiAzNi42MDcyIDE3OC45OSAzNi4wMjIyQzE3OS4xNTggMzUuNDM3MiAxNzkuMzcxIDM0LjkxMyAxNzkuNjMxIDM0LjQ0OTJDMTc5Ljg5IDMzLjk4NjIgMTgwLjE5NSAzMy42NTU0IDE4MC41NDYgMzMuNDU3OUMxODAuNzQ0IDMzLjQ4ODYgMTgwLjg2NiAzMy42MDYgMTgwLjkxMiAzMy44MTFDMTgwLjk1OCAzNC4wMTYzIDE4MC45NjkgMzQuMjU5NSAxODAuOTQ2IDM0LjU0MDVDMTgwLjkyMyAzNC44MjE5IDE4MC44ODkgMzUuMTEwNSAxODAuODQzIDM1LjQwNjZDMTgwLjc5NyAzNS43MDMgMTgwLjc3NSAzNS45NTAyIDE4MC43NzUgMzYuMTQ3NEMxODAuODUxIDM2LjU1NzcgMTgwLjk5OSAzNi44NzcgMTgxLjIyMSAzNy4xMDQ4QzE4MS40NDEgMzcuMzMyNyAxODEuNjkgMzcuNDY2IDE4MS45NjQgMzcuNTAzNkMxODIuMjM5IDM3LjU0MTcgMTgyLjUwOSAzNy40NzczIDE4Mi43NzYgMzcuMzA5OEMxODMuMDQzIDM3LjE0MyAxODMuMjYgMzYuODc3IDE4My40MjggMzYuNTEyQzE4My40NDMgMzYuNTI3NCAxODMuNDY2IDM2LjUzNDkgMTgzLjQ5NyAzNi41MzQ5TDE4My44MTcgMzMuNjQwNEMxODMuOTA5IDMzLjI0NTEgMTgzLjg0NyAzMi44OTU4IDE4My42MzQgMzIuNTkxOUMxODMuNDIgMzIuMjg4IDE4My4xMzggMzIuMTEzIDE4Mi43ODggMzIuMDY3NkMxODIuMzQ1IDMxLjQyOTQgMTgxLjc0NyAzMS4wOTE0IDE4MC45OTIgMzEuMDUzMkMxODAuMjM3IDMxLjAxNTQgMTc5LjQ2MyAzMS4yNjIzIDE3OC42NyAzMS43OTQxQzE3OC4xODIgMzIuMTQ0IDE3Ny43NTEgMzIuNjI2IDE3Ny4zNzggMzMuMjQxM0MxNzcuMDA0IDMzLjg1NyAxNzYuNjk5IDM0LjU0MDUgMTc2LjQ2MyAzNS4yOTI2QzE3Ni4yMjYgMzYuMDQ0OCAxNzYuMDU4IDM2LjgzOTEgMTc1Ljk1OSAzNy42NzQ4QzE3NS44NiAzOC41MTA0IDE3NS44NDEgMzkuMzIzNiAxNzUuOTAyIDQwLjExMzNDMTc1Ljk2MyA0MC45MDM4IDE3Ni4xMDQgNDEuNjQ4NCAxNzYuMzI1IDQyLjM0N0MxNzYuNTQ2IDQzLjA0NjIgMTc2Ljg1NSA0My42MzEyIDE3Ny4yNTIgNDQuMTAyQzE3Ny41ODcgNDQuNTEyMyAxNzcuOTY4IDQ0LjgxMjcgMTc4LjM5NSA0NS4wMDI3QzE3OC44MjIgNDUuMTkyNyAxNzkuMjY4IDQ1LjMxMDEgMTc5LjczNCA0NS4zNTU4QzE4MC4xOTkgNDUuNDAxMiAxODAuNjYgNDUuMzgyMSAxODEuMTE4IDQ1LjI5ODhDMTgxLjU3NSA0NS4yMTU1IDE4Mi4wMSA0NS4wOTc4IDE4Mi40MjEgNDQuOTQ1NEMxODIuOTU1IDQ0Ljc0ODIgMTgzLjUwNSA0NC40OTcyIDE4NC4wNjkgNDQuMTkzM0MxODQuNjMzIDQzLjg4OTcgMTg1LjE3NCA0My41MjQ4IDE4NS42OTMgNDMuMDk5MUMxODUuOTY2IDQyLjg3NTMgMTg2LjIyOCA0Mi42MzEzIDE4Ni40ODIgNDIuMzY5NkMxODYuNTk4IDQyLjY1NTMgMTg2LjcyNyA0Mi45MzE3IDE4Ni44ODIgNDMuMTkwNUMxODcuMjk0IDQzLjg3NDEgMTg3Ljg1IDQ0LjQyOSAxODguNTUyIDQ0Ljg1NDRDMTg5LjI1MyA0NS4yNzk3IDE5MC4xMTUgNDUuNDg0NCAxOTEuMTM3IDQ1LjQ2OTdDMTkyLjIzNSA0NS40NTQ0IDE5My4yNDkgNDUuMTc3NCAxOTQuMTggNDQuNjM3OEMxOTUuMTEgNDQuMDk4OCAxOTUuODcyIDQzLjMwNDIgMTk2LjQ2NyA0Mi4yNTZDMTk3LjM1OCA0Mi4yNTYgMTk4LjIzNCA0Mi4xMDk2IDE5OS4wOTYgNDEuODE5QzE5OS4wODkgNDEuOTExIDE5OS4wODEgNDIuMDA3OSAxOTkuMDc1IDQyLjA5NjZDMTk5LjAxNCA0Mi45MDE5IDE5OC45ODMgNDMuNDQ4NyAxOTguOTgzIDQzLjczNzZDMTk4Ljk2OCA0NC4yMzkgMTk4LjkzNCA0NC44NTgxIDE5OC44OCA0NS41OTQ5QzE5OC44MjcgNDYuMzMyIDE5OC43OTMgNDcuMTA2OSAxOTguNzc4IDQ3LjkxOThDMTk4Ljc2MyA0OC43MzI2IDE5OC43OTMgNDkuNTUzMiAxOTguODY5IDUwLjM4MTdDMTk4Ljk0NSA1MS4yMDk2IDE5OS4xMDUgNTEuOTYyIDE5OS4zNDkgNTIuNjM4M0MxOTkuNTkzIDUzLjMxNDEgMTk5Ljk0IDUzLjg4NzggMjAwLjM5IDU0LjM1OTFDMjAwLjg0IDU0LjgyOTkgMjAxLjQzMSA1NS4xMTEyIDIwMi4xNjMgNTUuMjAyM0MyMDIuOTQxIDU1LjMwODQgMjAzLjYxMiA1NS4xNzE3IDIwNC4xNzYgNTQuNzkyQzIwNC43NCA1NC40MTIgMjA1LjE5OCA1My44OTE4IDIwNS41NDkgNTMuMjMwOEMyMDUuODk5IDUyLjU2OTUgMjA2LjE0NyA1MS44MDYxIDIwNi4yOTIgNTAuOTQwMUMyMDYuNDM3IDUwLjA3NCAyMDYuNDc5IDQ5LjIwMzkgMjA2LjQxOCA0OC4zMzAxQzIwNi4zNTcgNDcuNDU2MiAyMDYuMTk2IDQ2LjYzMjEgMjA1LjkzNyA0NS44NTc1QzIwNS42NzggNDUuMDgyMiAyMDUuMzE5IDQ0LjQ0NCAyMDQuODYyIDQzLjk0MjNDMjA1LjEzNyA0My44NjY5IDIwNS40NjUgNDMuNzIyNiAyMDUuODQ2IDQzLjUwOTVDMjA2LjIyNyA0My4yOTY5IDIwNi42MiA0My4wNTc1IDIwNy4wMjQgNDIuNzkxNUMyMDcuMTIzIDQyLjcyNjEgMjA3LjIyMSA0Mi42NTczIDIwNy4zMiA0Mi41OTAyQzIwNy4yODMgNDMuMTI4NiAyMDcuMjY0IDQzLjUxMjYgMjA3LjI2NCA0My43Mzc2QzIwNy4yNDkgNDQuMjM5IDIwNy4yMTUgNDQuODU4MSAyMDcuMTYxIDQ1LjU5NDlDMjA3LjEwOCA0Ni4zMzIgMjA3LjA3MyA0Ny4xMDY5IDIwNy4wNTggNDcuOTE5OEMyMDcuMDQzIDQ4LjczMjYgMjA3LjA3MyA0OS41NTMyIDIwNy4xNSA1MC4zODE3QzIwNy4yMjYgNTEuMjA5NiAyMDcuMzg2IDUxLjk2MiAyMDcuNjMgNTIuNjM4M0MyMDcuODc0IDUzLjMxNDEgMjA4LjIyMSA1My44ODc4IDIwOC42NzEgNTQuMzU5MUMyMDkuMTIxIDU0LjgyOTkgMjA5LjcxMiA1NS4xMTEyIDIxMC40NDQgNTUuMjAyM0MyMTEuMjIxIDU1LjMwODQgMjExLjg5MiA1NS4xNzE3IDIxMi40NTcgNTQuNzkyQzIxMy4wMjEgNTQuNDEyIDIxMy40NzggNTMuODkxOCAyMTMuODMgNTMuMjMwOEMyMTQuMTggNTIuNTY5NSAyMTQuNDI4IDUxLjgwNjEgMjE0LjU3MyA1MC45NDAxQzIxNC43MTggNTAuMDc0IDIxNC43NTkgNDkuMjAzOSAyMTQuNjk5IDQ4LjMzMDFDMjE0LjYzNyA0Ny40NTYyIDIxNC40NzcgNDYuNjMyMSAyMTQuMjE4IDQ1Ljg1NzVDMjEzLjk1OSA0NS4wODIyIDIxMy42MDEgNDQuNDQ0IDIxMy4xNDMgNDMuOTQyM0MyMTMuNDE4IDQzLjg2NjkgMjEzLjc0NSA0My43MjI2IDIxNC4xMjcgNDMuNTA5NUMyMTQuNTA4IDQzLjI5NjkgMjE0LjkgNDMuMDU3NSAyMTUuMzA1IDQyLjc5MTVDMjE1LjUxNSA0Mi42NTMzIDIxNS43MjQgNDIuNTEwNyAyMTUuOTMyIDQyLjM2NDFDMjE2LjAxIDQzLjEwNzIgMjE2LjE3OSA0My43NTkgMjE2LjQ0OCA0NC4zMDczQzIxNi43NzYgNDQuOTc2MSAyMTcuMjIyIDQ1LjQ5MjUgMjE3Ljc4NyA0NS44NTc1QzIxOC4zNTEgNDYuMjIxOCAyMTkuMDE0IDQ2LjQyMzQgMjE5Ljc3NyA0Ni40NjEyQzIyMC41MzkgNDYuNDk4OCAyMjEuMzcgNDYuMzU4NiAyMjIuMjcxIDQ2LjAzOTNDMjIyLjk0MSA0NS43OTY1IDIyMy41MjUgNDUuNDkyNSAyMjQuMDIgNDUuMTI3OUMyMjQuNTE2IDQ0Ljc2MyAyMjQuOTYyIDQ0LjMxODUgMjI1LjM1OCA0My43OTQ2QzIyNS4zODEgNDMuNzY0MiAyMjUuNDAzIDQzLjczMTMgMjI1LjQyNSA0My43MDA2QzIyNS40OTYgNDMuOTEzNCAyMjUuNTc0IDQ0LjExNzkgMjI1LjY2NyA0NC4zMDczQzIyNS45OTUgNDQuOTc2MSAyMjYuNDQxIDQ1LjQ5MjUgMjI3LjAwNiA0NS44NTc1QzIyNy41NjkgNDYuMjIxOCAyMjguMjMzIDQ2LjQyMzQgMjI4Ljk5NiA0Ni40NjEyQzIyOS43NTggNDYuNDk4OCAyMzAuNTg5IDQ2LjM1ODYgMjMxLjQ4OSA0Ni4wMzkzQzIzMi4xNiA0NS43OTY1IDIzMi43NDQgNDUuNDkyNSAyMzMuMjM5IDQ1LjEyNzlDMjMzLjczNSA0NC43NjMgMjM0LjE4MSA0NC4zMTg1IDIzNC41NzcgNDMuNzk0NkMyMzQuOTc0IDQzLjI3IDIzNS4zMzYgNDIuNjY2IDIzNS42NjQgNDEuOTgyNEMyMzUuOTkyIDQxLjI5ODUgMjM2LjMyMyA0MC41MTY0IDIzNi42NTkgMzkuNjM0N0MyMzYuNzIgMzkuMzkxOCAyMzYuNjYzIDM5LjE3NTIgMjM2LjQ4OCAzOC45ODUyWlwiIGZpbGw9XCIjMEQwQzIzXCIvPlxyXG48L3N2Zz5gOyJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQWlGO0FBRWpGLGlDQUEwQyx1QkFBTztBQUFBLEVBSXpDLFNBQVM7QUFBQTtBQUViLFlBQU0sS0FBSztBQUVYLFdBQUssY0FBYyxJQUFJLGtCQUFrQixLQUFLLEtBQUs7QUFFbkQsV0FBSztBQUlMLFVBQUksUUFBUSxPQUFPLFdBQVc7QUFFOUIsVUFBSSxvQkFBb0IsTUFBTTtBQUM1QixZQUFJLE1BQU0sV0FBVyxLQUFLLFNBQVMsZ0JBQWdCO0FBQ2pELGtCQUFRLElBQUk7QUFDWixlQUFLO0FBQUEsbUJBQ0ksS0FBSyxTQUFTLGdCQUFnQjtBQUN2QyxrQkFBUSxJQUFJO0FBQ1osZUFBSztBQUFBO0FBQUE7QUFJVCxZQUFNLGlCQUFpQixVQUFVO0FBR2pDLFdBQUssU0FBUyxNQUFNLE1BQU0sb0JBQW9CLFVBQVU7QUFFeEQ7QUFHQSxVQUFJLGlCQUFpQixNQUFNO0FBRXpCLGNBQU0sV0FBVyxLQUFLLElBQUksTUFBTSxVQUFVO0FBQzFDLGFBQUssU0FBUyxhQUFhO0FBRzNCLFlBQUksS0FBSyxJQUFJLE1BQU0sVUFBVSxnQkFBZ0I7QUFDM0MsZUFBSyxTQUFTLFVBQVU7QUFDeEIsZUFBSyxTQUFTLEtBQUs7QUFDbkIsa0JBQVEsSUFBSTtBQUFBLGVBQ1A7QUFDTCxlQUFLLFNBQVMsVUFBVTtBQUN4QixlQUFLLFNBQVMsS0FBSztBQUNuQixrQkFBUSxJQUFJO0FB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